Date
Date
概述
该分类下的函数通常都支持使用date
、datetime
、datetimezone
作为日期计算,如果需要返回包含日期类型的结果,通常会根据传入的参数类型来返回对应的类型,因此有可能会包含时间信息。
时间、日期、时区运算为了保持本地和远程结果一致性,应该尽可能的显式传入如时区、周几作为开始等信息。
警告
在你没有彻底了解Date.EndOf*
系列函数之前,对Date.EndOf*
系列函数传递datetime
或datetimezone
类型的参数,该行为很可能导致灾难性的后果。
注意
由于日期函数能够接受其它类型的值(尤其是datetimezone
类型的值),同时还有很多函数的结果会受到计算机、软件或环境设置的影响。
因此,如果你不确定你的业务是否会跨时区,请考虑清楚是否固定区域设置(通常由culture
参数设置)。
#date
#date(year as number, month as number, day as number) as date
根据输入的年year
、月month
、日day
生成日期。
取值范围:
1
≤year
≤9999
1
≤month
≤12
1
≤day
≤31
三个参数必须都是整数。
如果输入的日期不存在会生成错误。比如:#date(2022, 2, 30)
并不会顺延日期,而是报错。
Date.Add*s
该系列函数主要用于对日期类型(也可能是包含日期信息的其他类型)的值进行偏移并返回对应的类型(和输入参数有关)的日期。
包含函数:
Date.AddDays
Date.AddMonths
Date.AddQuarters
Date.AddWeeks
Date.AddYears
通用定义:
(dateTime as any, num as number) as any
对日期dateTime
增加num
个单位并返回与参数dateTime
一样的类型。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值,返回值类型和该参数的类型一致,因此可能会返回包含时间的类型。
参数num
是一个32位整数,浮点数会报错。
Date.AddDays(#datetime(2022, 10, 1, 12, 30, 50), -1)
Date.AddDays
Date.AddDays(dateTime as any, numberOfDays as number) as any
对dateTime
增减numberOfDays
天。
Date.AddDays(#datetime(2022, 10, 1, 12, 30, 50), -1)
Date.AddMonths
Date.AddMonths(dateTime as any, numberOfMonths as number) as any
对dateTime
增减numberOfMonths
月。
Date.AddMonths(#datetime(2022, 10, 1, 12, 30, 50), 5)
Date.AddQuarters
Date.AddQuarters(dateTime as any, numberOfQuarters as number) as any
对dateTime
增减numberOfQuarters
季度。
Date.AddQuarters(#datetime(2022, 10, 1, 12, 30, 50), 5)
Date.AddWeeks
Date.AddWeeks(dateTime as any, numberOfWeeks as number) as any
对dateTime
增减numberOfWeeks
周。
Date.AddWeeks(#datetime(2022, 10, 1, 12, 30, 50), 5)
Date.AddYears
Date.AddYears(dateTime as any, numberOfYears as number) as any
对dateTime
增减numberOfYears
年。
Date.AddYears(#datetime(2022, 10, 1, 12, 30, 50), 5)
Date.Day
Date.Day(dateTime as any) as nullable number
返回dateTime
中的日。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
Date.Day(#datetime(2022, 10, 17, 12, 30, 50))
Date.DayOfWeek
Date.DayOfWeek(
dateTime as any,
optional firstDayOfWeek as nullable number
) as nullable number
返回介于0到6的表示dateTime
在这一周的序号。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
参数firstDayOfWeek
是Day.Type枚举值,默认使用本机区域设置。
返回的数字并非是周几,而是以firstDayOfWeek
作为一周开始的天序号。为了避免本机设置导致的错误,强烈建议使用显式传入firstDayOfWeek
。中国地区使用Day.Monday
,返回0
到6
表示周一到周日。
Date.DayOfWeek(#datetime(2022, 10, 17, 12, 30, 50))
Date.DayOfWeek(#datetime(2022, 10, 17, 12, 30, 50), Day.Friday)
Date.DayOfWeekName
Date.DayOfWeekName(date as any, optional culture as nullable text)
返回日期的周几名称。
参数date
可以是date
、datetime
、datetimezone
类型的值。
参数culture
用于设置区域,默认使用本机设置。
Date.DayOfWeekName(#datetime(2022, 10, 17, 12, 30, 50), "zh-CN")
Date.DayOfWeekName(#datetime(2022, 10, 17, 12, 30, 50), "en-US")
Date.DayOfYear
Date.DayOfYear(dateTime as any) as nullable number
返回日期是日期所在年的第几天。
参数date
可以是date
、datetime
、datetimezone
类型的值。
Date.DayOfYear(#datetime(2022, 10, 17, 12, 30, 50))
Date.DayOfYear(#date(2022, 1, 5))
Date.DaysInMonth
Date.DaysInMonth(dateTime as any) as nullable number
返回日期所在月共有多少天。
参数date
可以是date
、datetime
、datetimezone
类型的值。
Date.DaysInMonth(#date(2022, 1, 5))
Date.EndOf*
根据输入的日期类型(也可能是其他包含日期信息的其他类型)的值并返回对应区间的结束日期类型(和实参的类型一致)的值。
包含函数:
Date.EndOfDay
Date.EndOfMonth
Date.EndOfQuarter
Date.EndOfWeek
Date.EndOfYear
通用定义(“周”会有些不同):
(dateTime as any) as any
参数dateTime
可以是date
、datetime
、datetimezone
类型的值,返回值类型和该参数的类型一致,因此可能会返回包含时间的类型。
Date.EndOfDay
Date.EndOfDay(dateTime as any) as any
返回dateTime
对应日的结束日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应天最后一个时刻。如果不包含时间,那么就是对应日期。
Date.EndOfDay(#date(2022, 10, 17))
Date.EndOfDay(#datetime(2022, 10, 17, 12, 30, 50))
Date.EndOfMonth
Date.EndOfMonth(dateTime as any) as any
返回dateTime
对应月的结束日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应月最后一个时刻。如果不包含时间,那么就是对应日期。
Date.EndOfMonth(#date(2022, 10, 17))
Date.EndOfMonth(#datetime(2022, 10, 17, 12, 30, 50))
Date.EndOfQuarter
Date.EndOfQuarter(dateTime as any) as any
返回dateTime
对应季度的结束日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应季度最后一个时刻。如果不包含时间,那么就是对应日期。
Date.EndOfQuarter(#date(2022, 10, 17))
Date.EndOfQuarter(#datetime(2022, 10, 17, 12, 30, 50))
Date.EndOfWeek
Date.EndOfWeek(
dateTime as any,
optional firstDayOfWeek as nullable number
) as any
返回dateTime
对应周的结束日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应周最后一个时刻。如果不包含时间,那么就是对应日期。
参数firstDayOfWeek
是Day.Type枚举值,默认使用本机区域设置。
Date.EndOfWeek(#date(2022, 10, 17), Day.Monday)
Date.EndOfWeek(#datetime(2022, 10, 17, 12, 30, 50), Day.Monday)
Date.EndOfYear
Date.EndOfYear(dateTime as any) as any
返回dateTime
对应年的结束日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应年最后一个时刻。如果不包含时间,那么就是对应日期。
Date.EndOfYear(#date(2022, 10, 17))
Date.EndOfYear(#datetime(2022, 10, 17, 12, 30, 50))
Date.From
Date.From(
value as any,
optional culture as nullable text
) as nullable date
根据给定的值value
和可选的区域culture
返回日期。
value
为不同类型时:
null
,返回null
。text
,文本形式的日期使用Date.FromText
计算。datetime
,返回日期部分。datetimezone
,返回等效的日期部分(根据value
和culture
的时区信息计算出新的日期)。number
,表示OLE自动化的日期等效的日期部分。
// 2022/5/1
Date.From("5月")
Date.From("5月", "zh-CN")
Date.From("5月", "en-US")
// 2022/9/14
Date.From(#datetimezone(2022, 9, 15, 2, 8, 20, 11, 00), "en-US")
// 2021/9/5
Date.From(44444)
Date.FromText
Date.FromText(
text as nullable text,
optional options as any
) as nullable date
根据提供的文本text
和可选的参数options
返回日期。
options
可以是不同类型:
- 记录类型,字段名可以是
Format
,一个文本值,指示如何解析文本日期,具体参见标准日期时间格式字符串和自定义日期时间格式字符串。Culture
,可为空的文本值,指定文本日期的区域。默认使用本机区域(Culture.Current
)。
- 文本类型,指示国家地区。
如果有缺失值:
年
使用当前年份。月
使用1月。日
使用1日。
// 2022/9/15
Date.FromText("今天是2022年的9月15日", [Format = "今天是yyyy年的M月d日"])
// 2022/1/1
Date.FromText("公元2022", [Format = "ggyyyy", Culture = "zh-CN"])
// Error
Date.FromText("公元2022", [Format = "ggyyyy", Culture = "en-US"])
// 2022/5/1
Date.FromText("5月", [Format="MMM", Culture = "zh-CN"])
// Error
Date.FromText("5月", [Format="MMM", Culture = "en-US"])
Date.IsInCurrent*
判断实参是否在本地日期的日期区间内。
包含函数:
Date.IsInCurrentDay
Date.IsInCurrentMonth
Date.IsInCurrentQuarter
Date.IsInCurrentWeek
Date.IsInCurrentYear
通用定义:
(dateTime as any) as logical
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInCurrentDay
Date.IsInCurrentDay(dateTime as any) as nullable logical
返回dateTime
是否在本地日期的当天内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInCurrentDay(#date(2022, 10, 2))
Date.IsInCurrentDay(#datetime(2022, 12, 3, 9, 30, 50))
Date.IsInCurrentDay(#datetimezone(2022, 12, 2, 20, 0, 0, -8, 0))
Date.IsInCurrentMonth
Date.IsInCurrentMonth(dateTime as any) as nullable logical
返回dateTime
是否在本地日期的当月内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInCurrentMonth(#datetime(2022, 12, 12, 9, 30, 50))
Date.IsInCurrentMonth(#datetimezone(2022, 11, 30, 20, 0, 0, -8, 0))
Date.IsInCurrentQuarter
Date.IsInCurrentQuarter(dateTime as any) as nullable logical
返回dateTime
是否在本地日期的当季度内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInCurrentQuarter(#datetime(2022, 12, 12, 9, 30, 50))
Date.IsInCurrentQuarter(#datetimezone(2022, 11, 30, 20, 0, 0, -8, 0))
Date.IsInCurrentWeek
Date.IsInCurrentWeek(dateTime as any) as nullable logical
返回dateTime
是否在本地日期的当周内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInCurrentWeek(#datetime(2022, 12, 12, 9, 30, 50))
Date.IsInCurrentWeek(#datetimezone(2022, 11, 30, 20, 0, 0, -8, 0))
Date.IsInCurrentYear
Date.IsInCurrentYear(dateTime as any) as nullable logical
返回dateTime
是否在本地日期的当年内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInCurrentYear(#datetime(2022, 12, 12, 9, 30, 50))
Date.IsInCurrentYear(#datetimezone(2022, 11, 30, 20, 0, 0, -8, 0))
Date.IsInNext*
判断实参是否在本地日期之后的一个(或多个)日期周期内。
“之后的多个日期区间”是指:之后一个日期周期到指定个数的日期周期的范围。
包含函数:
- 之后的一个日期周期
Date.IsNextDay
Date.IsNextMonth
Date.IsNextQuarter
Date.IsNextWeek
Date.IsNextYear
- 之后的N个日期周期
Date.IsNextNDays
Date.IsNextNMonths
Date.IsNextNQuarters
Date.IsNextNWeeks
Date.IsNextNYears
通用定义:
(dateTime as any) as logical
(datetime as any, num as number) as logical
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
参数num
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会在datetime
超过本地日期时报错。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
该系列函数在dateTime
不超过本地日期时会直接返回false
。
该系数函数中的num
不可以是负数或0,即不支持向前判断,如果需要可以使用Date.IsInPrevious*
系列函数。
Date.IsInNextDay
Date.IsInNextDay(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之后的一天内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInNextDay(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInNextMonth
Date.IsInNextMonth(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之后的一月内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInNextMonth(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInNextNDays
Date.IsInNextNDays(
dateTime as any,
days as number
) as nullable logical
返回dateTime
是否在本地日期之后一天到days
天的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数days
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会在dateTime
超过本地日期时报错。
Date.IsInNextNDays(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInNextNMonths
Date.IsInNextNMonths(
dateTime as any,
months as number
) as nullable logical
返回dateTime
是否在本地日期之后一月到months
月的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数months
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会在dateTime
超过本地日期时报错。
Date.IsInNextNMonths(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInNextNQuarters
Date.IsInNextNQuarters(
dateTime as any,
quarters as number
) as nullable logical
返回dateTime
是否在本地日期之后一季度到quarters
季度的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数quarters
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会在dateTime
超过本地日期时报错。
Date.IsInNextNQuarters(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInNextNWeeks
Date.IsInNextNWeeks(
dateTime as any,
weeks as number
) as nullable logical
返回dateTime
是否在本地日期之后一周到weeks
周的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数weeks
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会在dateTime
超过本地日期时报错。
Date.IsInNextNWeeks(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInNextNYears
Date.IsInNextNYears(
dateTime as any,
years as number
) as nullable logical
返回dateTime
是否在本地日期之后一年到years
年的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数years
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会在dateTime
超过本地日期时报错。
Date.IsInNextNYears(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInNextQuarter
Date.IsInNextQuarter(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之后的一季度内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInNextQuarter(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInNextWeek
Date.IsInNextWeek(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之后的一周内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInNextWeek(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInNextYear
Date.IsInNextYear(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之后的一年内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInNextYear(#datetimezone(2022, 12, 3, 20, 0, 0, 0, 0))
Date.IsInPrevious*
判断实参是否在本地日期之前的一个(或多个)日期周期内。
“之前的多个日期区间”是指:之前一个日期周期到指定个数的日期周期的范围。
包含函数:
- 之后的一个日期周期
Date.IsInPreviousDay
Date.IsPreviousMonth
Date.IsPreviousQuarter
Date.IsPreviousWeek
Date.IsPreviousYear
- 之后的N个日期周期
Date.IsPreviousNDays
Date.IsPreviousNMonths
Date.IsPreviousNQuarters
Date.IsPreviousNWeeks
Date.IsPreviousNYears
通用定义:
(dateTime as any) as logical
(datetime as any, num as number) as logical
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
参数num
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会在datetime
超过本地日期时报错。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
该系列函数在dateTime
不超过本地日期时会直接返回false
。
该系数函数中的num
不可以是负数或0,即不支持向后判断,如果需要可以使用Date.IsInNext*
系列函数。
Date.IsInPreviousDay
Date.IsInPreviousDay(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之前的一天内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInPreviousDay(#datetime(2022, 12, 3, 9, 30, 50))
Date.IsInPreviousMonth
Date.IsInPreviousMonth(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之前的一月内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInPreviousMonth(#datetime(2022, 12, 3, 9, 30, 50))
Date.IsInPreviousNDays
Date.IsInPreviousNDays(
dateTime as any,
days as number
) as nullable logical
返回dateTime
是否在本地日期之前一天到days
天的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数days
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会报错。
Date.IsInPreviousNDays(#datetime(2022, 12, 3, 9, 30, 50), 2)
Date.IsInPreviousNMonths
Date.IsInPreviousNMonths(
dateTime as any,
months as number
) as nullable logical
返回dateTime
是否在本地日期之前一月到months
月的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数months
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会报错。
Date.IsInPreviousNMonths(#datetime(2022, 12, 3, 9, 30, 50), 2)
Date.IsInPreviousNQuarters
Date.IsInPreviousNQuarters(
dateTime as any,
quarters as number
) as nullable logical
返回dateTime
是否在本地日期之后一季度到quarters
季度的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数quarters
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会报错。
Date.IsInPreviousNQuarters(#datetime(2022, 12, 3, 9, 30, 50), 2)
Date.IsInPreviousNWeeks
Date.IsInPreviousNWeeks(
dateTime as any,
weeks as number
) as nullable logical
返回dateTime
是否在本地日期之后一周到weeks
周的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数weeks
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会报错。
Date.IsInPreviousNWeeks(#datetime(2022, 12, 3, 9, 30, 50), 2)
Date.IsInPreviousNYears
Date.IsInPreviousNYears(
dateTime as any,
years as number
) as nullable logical
返回dateTime
是否在本地日期之后一年到years
年的范围内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
参数years
是一个32位整数,可以指定负数或0,但是没有意义。指定浮点数会报错。
Date.IsInPreviousNYears(#datetime(2022, 12, 3, 9, 30, 50), 2)
Date.IsInPreviousQuarter
Date.IsInPreviousQuarter(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之前的一季度内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInPreviousQuarter(#datetime(2022, 12, 3, 9, 30, 50))
Date.IsInPreviousWeek
Date.IsInPreviousWeek(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之前的一周内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInPreviousWeek(#datetime(2022, 12, 3, 9, 30, 50))
Date.IsInPreviousYear
Date.IsInPreviousYear(dateTime as any) as nullable logical
返回dateTime
是否在本地日期之前的一年内。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
对于datetimezone
类型的值需要小心使用,最好先了解熟悉时区相关内容。
Date.IsInPreviousYear(#datetime(2022, 12, 3, 9, 30, 50))
Date.IsInYearToDate
Date.IsInYearToDate(dateTime as any) as nullable logical
判断dateTime
是否在本地日期所在年中且月日早于或等于月日。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
Date.IsInYearToDate(#date(2022, 12, 31))
Date.IsLeapYear
Date.IsLeapYear(dateTime as any) as nullable logical
判断datetime
所在的年是否是闰年。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
闰年判断规则:四年一闰,百年不闰,四百年又闰。闰年的规则实际更加复杂,不过之后的规则太久远,可以不用关注。
注意:Excel早年因为兼容问题存在1900年是闰年的BUG,在PQ中不存在该BUG,但是1900年3月1日前的日期会进行额外处理。
Date.IsLeapYear(#date(2022, 12, 31))
Date.Month
Date.Month(dateTime as any) as nullable number
返回dateTime
中的月份(数字1-12)。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
Date.Month(#datetime(2022, 12, 31, 0, 0, 0))
Date.MonthName
Date.MonthName(
date as any,
optional culture as nullable text
) as nullable text
返回date
中的月份名称。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
参数culture
默认使用本机设置。
Date.MonthName(#datetime(2022, 12, 31, 0, 0, 0))
Date.MonthName(#datetime(2022, 12, 31, 0, 0, 0), "zh-CN")
Date.MonthName(#datetime(2022, 12, 31, 0, 0, 0), "en-US")
Date.QuarterOfYear
Date.QuarterOfYear(dateTime as any) as nullable number
返回dateTime
中的季度(数字1-4)。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
Date.QuarterOfYear(#datetime(2022, 12, 31, 0, 0, 0))
Date.StartOf*
根据输入的日期类型(也可能是其他包含日期信息的其他类型)的值并返回对应区间的开启日期类型(和实参的类型一致)的值。
包含函数:
Date.StartOfDay
Date.StartOfMonth
Date.StartOfQuarter
Date.StartOfWeek
Date.StartOfYear
通用定义(“周”会有些不同):
(dateTime as any) as any
参数dateTime
可以是date
、datetime
、datetimezone
类型的值,返回值类型和该参数的类型一致,因此可能会返回包含时间的类型。
Date.StartOfDay
Date.StartOfDay(dateTime as any) as any
返回dateTime
对应日的开始日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应天最后一个时刻。如果不包含时间,那么就是对应日期。
Date.StartOfDay(#date(2022, 10, 17))
Date.StartOfDay(#datetime(2022, 10, 17, 12, 30, 50))
Date.StartOfMonth
Date.StartOfMonth(dateTime as any) as any
返回dateTime
对应月的开始日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应天最后一个时刻。如果不包含时间,那么就是对应日期。
Date.StartOfMonth(#date(2022, 10, 17))
Date.StartOfMonth(#datetime(2022, 10, 17, 12, 30, 50))
Date.StartOfQuarter
Date.StartOfQuarter(dateTime as any) as any
返回dateTime
对应季度的开始日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应天最后一个时刻。如果不包含时间,那么就是对应日期。
Date.StartOfQuarter(#date(2022, 10, 17))
Date.StartOfQuarter(#datetime(2022, 10, 17, 12, 30, 50))
Date.StartOfWeek
Date.StartOfWeek(
dateTime as any,
optional firstDayOfWeek as nullable number
) as any
返回dateTime
对应周的开始日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应周最后一个时刻。如果不包含时间,那么就是对应日期。
参数firstDayOfWeek
是Day.Type枚举值,默认使用本机区域设置。
Date.StartOfWeek(#date(2022, 10, 17), Day.Monday)
Date.StartOfWeek(#datetime(2022, 10, 17, 12, 30, 50), Day.Monday)
Date.StartOfYear
Date.StartOfYear(dateTime as any) as any
返回dateTime
对应年的开始日期。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
如果dateTime
中包含时间,那么时间为对应天最后一个时刻。如果不包含时间,那么就是对应日期。
Date.StartOfYear(#date(2022, 10, 17))
Date.StartOfYear(#datetime(2022, 10, 17, 12, 30, 50))
Date.ToRecord
Date.ToRecord(date as date) as record
将日期值date
的转换成记录,记录的字段名是日期的各部分。
// [Year = 2022, Month = 9, Day = 15]
Date.ToRecord(#date(2022, 9, 15))
Date.ToText
Date.ToText(
date as nullable date,
optional options as any,
optional culture as nullable text
) as nullable text
根据日期date
返回日期的文本,文本结果会考虑参数options
和culture
。
options
可以是不同类型:
- 记录类型,字段名可以是
Format
,一个文本值,格式化文本字符串,具体参见标准日期时间格式字符串和自定义日期时间格式字符串。Culture
,可为空的文本值,指定文本日期的区域。默认使用本机区域(Culture.Current
)。
- 文本类型,一个文本值,指示如何解析文本日期。等同
Format
字段的意思。
culture
用于指定区域,默认为本机区域。该参数仅可用于传统工作流。如果options
为记录,将会忽略culture
参数。
如果输出的部分不存在,则按照默认值输出:时间为00:00:00
;时区不会使用设置的区域,而是使用本机区域的时区。
当options
为记录时,无法使用时区格式字符串。
// 9月
Date.ToText(#date(2022, 9, 15), [Format = "MMM"])
Date.ToText(#date(2022, 9, 15), [Format = "MMM", Culture = "zh-CN"])
Date.ToText(#date(2022, 9, 15), "MMM")
Date.ToText(#date(2022, 9, 15), "MMM", "zh-CN")
// Sep
Date.ToText(#date(2022, 9, 15), [Format = "MMM", Culture="en-US"])
//00:00:00+08:00
Date.ToText(#date(2022, 2, 3), "HH:mm:sszzz", "en-US")
// 2022-02-03+08:00
Date.ToText(#date(2022, 2, 3), "yyyy-MM-ddzzz", "en-US")
// error 无法使用指定格式将文本值转换为 date。该格式包括 时区 组件。
Date.ToText(#date(2022, 2, 3), [Format = "yyyy-MM-ddzzz", Culture = "en-US"])
Date.WeekOfMonth
Date.WeekOfMonth(
dateTime as any,
optional firstDayOfWeek as nullable number
) as nullable number
返回dateTime
属于当月的第几周(数字1-6)。
参数firstDayOfWeek
是Day.Type枚举值,默认使用本机区域设置。
规则:当月第一天为第一周,之后每次遇到(第一天除外)firstDayOfWeek
指定的值,周数加1。
// 2
Date.WeekOfMonth(#date(2022, 12, 7))
Date.WeekOfMonth(#date(2022, 12, 7), Day.Monday)
// 1
Date.WeekOfMonth(#date(2022, 12, 7), Day.Thursday)
Date.WeekOfYear
Date.WeekOfYear(
dateTime as any,
optional firstDayOfWeek as nullable number
) as nullable number
返回dateTime
属于当年的第几周(数字1-54)。
参数firstDayOfWeek
是Day.Type枚举值,默认使用本机区域设置。
规则:当年第一天为第一周,之后每次遇到(第一天除外)firstDayOfWeek
指定的值,周数加1。
Date.WeekOfYear(#date(2022, 12, 7), Day.Thursday)
Date.Year
Date.Year(dateTime as any) as nullable number
返回dateTime
中的年份(数字1-12)。
参数dateTime
可以是date
、datetime
、datetimezone
类型的值。
Date.Year(#date(2022, 10, 17))