日期格式化器

Version 24.3.9111


日期格式化器


常用日期格式化器

下面的格式化器是常用日期格式化器。每个格式化器都有一个例子供参考。

其它日期格式化器的例子会包含在示例日期格式中。

注意:某些格式化器的可选参数周围的方括号不是必需的。 它们的存在是为了表示该参数是可选的。

now([outputformat])

返回当前系统的日期,格式由 outputformat 来指定(默认格式是:yyyy-MM-dd’T’hh:mm:sszzzz)。这个格式化程序的不同寻常之处在于它不会修改输入属性(变量),因此不需要输入属性。

  • outputformat: 可选的格式说明符。有效说明符包括 d(短日期模式)、D(长日期模式)、f(长日期/短时间模式)、F(长日期/时间模式)、g(常规短日期/时间模式)、G(常规短日期/长时间模式)、rR(RFC1123 模式)、s(可排序日期/时间模式)、t(短时间模式)、T(长时间模式)、file(Windows 文件时间)、MM/dd/yy等等。

示例

<arc:set attr="timestamp" value="[now()]" />

todate([outputformat][, inputformat][, strictInputFormat])

返回由属性值指定的日期,如果有提供,则按参数指定的格式进行。

注意:如果在空的输入属性上调用格式化器,它会输出以上面显示的默认输出格式格式化的当前系统时间。

  • outputformat: 可选的格式说明符。有效说明符包括 d(短日期模式)、D(长日期模式)、f(长日期/短时间模式)、F(长日期/时间模式)、g(常规短日期/时间模式)、G(常规短日期/长时间模式)、rR(RFC1123 模式)、s(可排序日期/时间模式)、t(短时间模式)、T(长时间模式)、file(Windows 文件时间)、MM/dd/yy等等。
  • inputformat: 可选的输入格式指定符。默认值是自动检测。格式化器在解析日期属性时将尝试优先输入格式,但是,如果输入属性不匹配指定的输入格式,格式化器将尝试使用已知(标准)日期格式来解析输入属性。只有当输入属性不匹配指定的输入格式或任何已知的日期格式时,才会出现错误。
  • strictInputFormat: 参数检查传入的日期值是否与输入格式匹配:如果不匹配,任务将抛出错误,而不是将日期转换为标准日期格式。 默认是不检查。 要强制检查,请将“true”添加到格式化器。

示例

<arc:set attr="simpleDate" value="01-30-2020" />
<arc:set attr="reformattedDate" value="[simpleDate | todate('yyyyMMdd', 'dd-MM-yyyy')]" />

dateadd(intervaltype, value[, outputformat][, inputformat])

返回日期时间的字符串值,该值是将指定的数字间隔(有符号的整数)加到指定的日期部分的结果。

  • intervaltype:想添加的可选区间(year, month, day, hour, minute, second, 或者 millisecond)。
  • value:想添加的可选时间间隔数。
  • outputformat: 可选的格式说明符。有效说明符包括 d(短日期模式)、D(长日期模式)、f(长日期/短时间模式)、F(长日期/时间模式)、g(常规短日期/时间模式)、G(常规短日期/长时间模式)、rR(RFC1123 模式)、s(可排序日期/时间模式)、t(短时间模式)、T(长时间模式)、file(Windows 文件时间)、MM/dd/yy等等。
  • inputformat:可选的输入格式指定符。默认为自动检测。

示例

<arc:set attr="shipdate" value="2020-03-15" />
<arc:set attr="estmArrivalDate" value="[shipdate | dateadd('day', 2)]" />

其它日期格式化器

下面出现的是一些未提及的不太常用的日期格式化器。

compare([value][, inputformat])

返回一个有符号的数字,表示属性值和参数值所代表的日期的相对值。

  • value:可选值,将与属性值比较的日期的字符串表示。默认值为 now。
  • inputformat:可选的输入格式指定符。默认为自动检测。

date([outputformat])

如果提供了参数,则以参数指定的格式返回当前的系统日期和时间。

  • outputformat: 可选的格式说明符。有效说明符包括 d(短日期模式)、D(长日期模式)、f(长日期/短时间模式)、F(长日期/时间模式)、g(常规短日期/时间模式)、G(常规短日期/长时间模式)、rR(RFC1123 模式)、s(可排序日期/时间模式)、t(短时间模式)、T(长时间模式)、file(Windows 文件时间)、MM/dd/yy等等。

注意:这个格式化器是 now() 格式化器的一个别名。

datediff([interval][, value][, inputformat])

返回 now 和 value 参数指定的日期之间的差值(以 interval 参数指定的单位)。

  • interval:想要的结果的可选区间,指定日、时、分、秒或毫秒。指定日、小时、分钟、秒或毫秒。
  • value:可选的字符串,表示要显示的日期。可选的字符串表示的日期与属性值进行比较。默认值是 now。
  • inputformat:可选的输入格式指定符。默认为自动检测。

day([inputformat])

返回属性值所代表的日期中天的部分,以 1 到 31 之间的数值表示。

  • inputformat:可选值的输入格式指定符。默认为自动检测。

dayofweek([inputformat])

返回属性值所代表的日期的星期几。

dayofyear([inputformat])

返回属性值所代表的日期的年月日,数值在 1 到 366 之间。

  • inputformat:可选的输入格式指定符。默认值是自动检测。

filetimenow()

返回当前系统文件时间的日期和时间。

fromfiletime([outputformat])

将有效的文件时间转换为有效的日期时间值,其格式由 outputformat 参数指定(如果有提供)。

  • outputformat: 可选的格式说明符。有效说明符包括 d(短日期模式)、D(长日期模式)、f(长日期/短时间模式)、F(长日期/时间模式)、g(常规短日期/时间模式)、G(常规短日期/长时间模式)、rR(RFC1123 模式)、s(可排序日期/时间模式)、t(短时间模式)、T(长时间模式)、file(Windows 文件时间)、MM/dd/yy等等。

isleap([ifleap][, ifnotleap])

如果属性值代表的 4 位数年份是闰年,则返回 true(或 ifleap),否则返回 false(或 ifnotleap)。

  • ifleap:可选值,如果属性值是闰年,则返回此值。
  • ifnotleap:可选值,如果属性值不是闰年,则返回此值。

month([inputformat])

返回属性值所代表的日期的 1 到 12 之间的月份部分。

  • inputformat:可选的输入格式指定符。默认值是自动检测。

tofiletime([inputformat])

将有效的日期时间转换为有效的文件时间值。

  • inputformat:可选的输入格式指定符。默认值是自动检测。

toutc([outputformat][, inputformat])

返回由属性值指定的日期,该属性值将转换为 UTC 并按照 outputformat 参数指定的格式(如果提供的话)进行格式化。

  • outputformat: 可选的格式说明符。有效说明符包括 d(短日期模式)、D(长日期模式)、f(长日期/短时间模式)、F(长日期/时间模式)、g(常规短日期/时间模式)、G(常规短日期/长时间模式)、rR(RFC1123 模式)、s(可排序日期/时间模式)、t(短时间模式)、T(长时间模式)、file(Windows 文件时间)、MM/dd/yy等等。

utcnow([outputformat])

返回当前系统的 UTC 日期和时间。

  • outputformat: 可选的格式说明符。有效说明符包括 d(短日期模式)、D(长日期模式)、f(长日期/短时间模式)、F(长日期/时间模式)、g(常规短日期/时间模式)、G(常规短日期/长时间模式)、rR(RFC1123 模式)、s(可排序日期/时间模式)、t(短时间模式)、T(长时间模式)、file(Windows 文件时间)、MM/dd/yy等等。

weekday([inputformat])

以整数形式返回一周的某一天,其中周一为 0,周日为 6。

  • inputformat:可选的输入格式指定符。默认为自动检测。

year([inputformat])

返回属性值所代表的日期的年份部分。

  • inputformat:可选的输入格式指定符。默认值是自动检测。

示例日期格式

以下是供参考的示例日期格式字符串。 使用它们自定义日期格式化器以适合用例。 由于每个版本支持的内容存在差异,因此本部分包含 跨平台版本.NET 版本 版本的结果 。

对于下表中的每个示例,日期为 2024 年 3 月 5 日。时间为北京时间 (UTC+8) 午夜后 12 小时 31 分 5 秒 336 毫秒。

日期格式 跨平台版本结果 .NET 版本结果
MM-dd-yy 03-05-24 03-05-24
MM/dd/yyyy HH:mm 03/05/2024 12:31 03/05/2024 12:31
yyyy-MM-dd HH:mm:ss 2024-03-05 12:31:05 2024-03-05 12:31:05
yyyy-MM-dd HH:mm:ss.SSS 2024-03-05 12:31:05.336 Not applicable for .NET
yyyy-MM-dd HH:mm:ss.fff 2024-03-05 12:31:05.336 2024-03-05 12:31:05.336
yyyy-MM-dd HH:mm:ss X 2024-03-05 17:31:05 +08 Not applicable for .NET
ddd dd MMM yyyy HH:mm:ss zzz Tue 05 Mar 2024 12:31:05 +08:00 Tue 05 Mar 2024 12:31:05 +08:00
ddd dd MMM yyyy HH:mm:ss z Tue 05 Mar 2024 12:31:05 +0800 Tue 05 Mar 2024 12:31:05 +5

包含其它文本字符的日期格式(如:’T’)

在日期时间字符串中使用文字(如T)时,请特别注意可能在格式化器之外使用的引号字符。 例如,如果在值 XML 属性中使用格式化器将值分配给 ArcScript 属性,则可能需要使用不同的引号样式或转义序列以避免过早终止字符串。

例如,如果要在自定义脚本中为项目的属性创建日期时间值并且需要文字,则可以选择在开始和结束之间定义该属性的值 arc:set 标签。 请注意,未设置 value=""

<arc:set attr="out.data">[_ | now("yyyy-MM-dd'T'HH:mm:ss")]</arc:set>