本帖最后由 Eden.Sun 于 2022-7-29 15:08 编辑
这篇帖子介绍用过 AR 的 ”脚本”功能实现对日期时间的任意格式化展示。
我们的AR 提供了多种情况下的时间日期格式化展示功能,比如长/短日期、时间、汉字年份时间等等,可以满足大多数情况下的需求。不过,当我们想根据自己的想法来设置特殊的格式化的时候,系统提供的格式化类型可能就难以满足我们的需求,比如我我想把日期按照”22-Mar-06” 的格式展示(年份后两位、月份英文单词的缩写、两位日期)。类似这种特殊的情况,我们就可以通过“脚本”功能,自己写代码来实现;
首先是需求分析:
① 需求:日期格式化,将日期格式化为指定的格式,如“2022-07-22”、“2022/07/22” 转换为22-Mar-06(年份的后两位,月份是英文单词的缩写,日期是常 规的两位数字) ② 问题分析与解决(1): a) 通过日期类的操作,分别获取到传入参数的年、月、日,然后根据实际的需求进行格式化:
b) 脚本 - Function ConvertDateFormat(ByVal inputString As Date) As String
- Dim now As Date = inputString '‘将参数转化为日期类型
- Dim DateText As String = now.ToString("dd") '获取日期的 日 部分的数据
-
- '这是 Excel 的公式,MMM表示获取月份英文的缩写,MMMM 表示月份的英文单词的全拼
- Dim MonthText As String = now.ToString("MMM", New System.Globalization.CultureInfo("en-us"))
- Dim YearText As String = now.ToString("yy") ' 获取年份的后两位
- Dim s As String = YearText + "-" + MonthText + "-" + DateText ' 拼接结果
- Return s ' 返回结果
- End Function
复制代码 c) [size=9.33333px]效果预览:
添加脚本:
添加数据:
添加脚本:
③ 问题分析与解决(2):这个问题的难点在于月份的缩写形式不好获取和转换,其他的需求都可以通过格式化来实现。那么我们可以将所有的月份对应的引文单词的缩写枚举出来,然后根据月份的数字获取对应的单词;
a) 脚本:
- Function GetMonthEN(ByVal month As String) As String
- Dim strReturn As String = "" '定义返回结果
- Dim strParaMonthn As String = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec" '月份缩写字符串
- Dim strSubMonth() As String '定义字符串切割函数
- strSubMonth = strParaMonthn.Split("_".ToCharArray()) '切割字符串
- Dim index As Integer = month - 1 '获取数组下标(数组下标从0开始)
- strReturn = String.Join("_", strSubMonth(index)) ' 返回结果
- Return strReturn '
- End Function
复制代码 a) 效果展示:
脚本内容:
添加数据:
预览效果展示:
|