Time
Time
概述
该分类下的函数通常都支持使用date
、time
、datetime
、datetimezone
作为时间计算。
时间、日期、时区运算为了保持本地和远程结果一致性,应该尽可能的显式传入如时区、周几作为开始等信息。
时间的精度为100
ns,即一天中的时间范围是00:00:00
到23:59:59.9999999
。
时间值#time(24, 0, 0)
是一个特殊的值,应尽可能避免使用该值。它可能会被当做一整天看待,也可能当做#time(0, 0, 0)
看待。具体参见值-时间中的介绍。
#time
#time(hour as number, minute as number, second as number) as time
根据输入值返回time
类型的值。
取值范围:
0
≤hour
≤23
0
≤minute
≤59
0
≤second
<60
除second
之外,其他参数都必须是整数。
参数hour
可以为24
,但是此时minute
和second
必须为0。
#time(24, 0, 0)
是一个特殊的时间值,在没搞清楚使用规则时应该避免使用。
#time(2, 3, 4.33333)
Time.EndOfHour
Time.EndOfHour(dateTime as any) as any
返回dateTime
在前小时的最后一个时刻的时间(返回类型和参数dateTime
类型一致)。
参数dateTime
可以设置的类型是datetime
、datetimezone
、date
、time
。
date
:因为缺失时间部分,所以结果始终是本身。
Time.EndOfHour(#time(2, 3, 4))
Time.EndOfHour(#date(2022, 1, 1))
Time.EndOfHour(#datetime(2022, 1, 1, 2, 3, 4))
Time.EndOfHour(#datetimezone(2022, 1, 1, 2, 3, 4, 8, 0))
Time.From
Time.From(
value as any,
optional culture as nullable text
) as nullable time
根据给定的值value
和可选的区域culture
返回日期。
value
为不同类型时:
null
,返回null
。text
,文本形式的时间使用Time.FromText
计算。datetime
,返回时间部分。datetimezone
,返回等效的时间部分(根据value
和culture
的时区信息计算出新的时间)。number
,表示OLE自动化的日期等效的时间部分。
Time.FromText
Time.FromText(
text as nullable text,
optional options as any
) as nullable time
根据提供的文本text
和可选的参数options
返回日期时间。
options
可以是不同类型:
- 记录类型,字段名可以是
Format
,一个文本值,指示如何解析文本日期时间,具体参见标准日期时间格式字符串和自定义日期时间格式字符串。Culture
,可为空的文本值,指定文本日期时间的区域。默认使用本机区域(Culture.Current
)。
- 文本类型,指示国家地区。
经过测试,**Time.FromText**
并不支持自定义格式字符串。
如果有缺失值:
- 日期全部或部分缺失时,
时
、分
、秒
使用0。
// error 无法使用指定格式将文本值转换为 time。该格式包括 日期 组件。
Time.FromText("9.15T2:3:4", [Format = "M/ddTH:m:s"])
// 2:03:04,结果不符合预期
Time.FromText("2:3:4", [Format="s:h:m"])
// 2:00:00
Time.FromText("02")
// error
Time.FromText("2")
// 2:05:00
Time.FromText("2:5")
// 02:03:04.6660000
Time.FromText("2:3:4.666")
Time.Hour
Time.Hour(dateTime as any) as nullable number
返回dateTime
的小时部分(整数0-23)。
参数dateTime
可以设置的类型是datetime
、datetimezone
、time
。
Time.Hour(#time(2, 3, 4))
Time.Hour(#datetime(2022, 12, 1, 4, 5, 6))
Time.Minute
Time.Minute(dateTime as any) as nullable number
返回dateTime
的分钟部分(整数0-59)。
参数dateTime
可以设置的类型是datetime
、datetimezone
、time
。
Time.Minute(#time(2, 3, 4))
Time.Minute(#datetime(2022, 12, 1, 4, 5, 6))
Time.Second
Time.Second(dateTime as any) as nullable number
返回dateTime
的秒部分(浮点数0-59.9999999)。
参数dateTime
可以设置的类型是datetime
、datetimezone
、time
。
Time.Minute(#time(2, 3, 4))
Time.Minute(#datetime(2022, 12, 1, 4, 5, 6))
Time.StartOfHour
Time.StartOfHour(dateTime as any) as any
返回dateTime
在前小时的第一个时刻的时间(返回类型和参数dateTime
类型一致)。
参数dateTime
可以设置的类型是datetime
、datetimezone
、date
、time
。
date
:因为缺失时间部分,因此时间部分为#time(0, 0, 0)
,但因为需要返回date
类型的值,所以结果始终是本身。
Time.StartOfHour(#time(2, 3, 4))
Time.StartOfHour(#date(2022, 1, 1))
Time.StartOfHour(#datetime(2022, 1, 1, 2, 3, 4))
Time.StartOfHour(#datetimezone(2022, 1, 1, 2, 3, 4, 8, 0))
Time.ToRecord
Time.ToRecord(time as time) as record
将时间值time
的转换成记录,记录的字段名是时间的各部分。
Time.ToText
Time.ToText(
time as nullable time,
optional options as any,
optional culture as nullable text
) as nullable text
根据日期time
返回日期的文本,文本结果会考虑参数options
和culture
。
options
可以是不同类型:
- 记录类型,字段名可以是
Format
,一个文本值,格式化文本字符串,具体参见标准日期时间格式字符串和自定义日期时间格式字符串。Culture
,可为空的文本值,指定文本日期的区域。默认使用本机区域(Culture.Current
)。
- 文本类型,一个文本值,指示如何解析文本日期。等同
Format
字段的意思。
culture
用于指定区域,默认为本机区域。该参数仅可用于传统工作流。如果options
为记录,将会忽略culture
参数。
如果输出的部分不存在,则按照默认值输出:日期为0001-01-01
;时区不会使用设置的区域,而是使用本机区域的时区。
当options
为记录时,无法使用时区格式字符串。
// 15:09:56+08:00
Time.ToText(#time(15, 9, 56.3333), "HH:mm:sszzz", "en-US")
// 0001-01-01+08:00
Time.ToText(#time(15, 9, 56.3333), "yyyy-MM-ddzzz", "en-US")
// error 无法使用指定格式将文本值转换为 time。该格式包括 日期 组件。
Time.ToText(#time(15, 9, 56.3333), [Format="yyyy-MM-ddzzz", Culture="en-US"])