日期和时间函数
变量
now
获取YYYY-MM-DD-hhss格式的当前时间。
时间戳
以Unix时间戳形式获取当前时间。
函数
addSeconds(日期;数字)
将给定秒数添加到日期后返回新日期。 要减去秒数,请输入一个负数。
示例:
-
addSeconds(2016-12-08T15:55:57.536Z;2)返回2016-12-08T15:55:59.536Z
-
addSeconds(2016-12-08T15:55:57.536Z;-2)返回2016-12-08T15:55:55.536Z
addMinutes (日期;数字) addminutes-date-number
将给定分钟数添加到日期后返回新日期。 要减去分钟,请输入一个负数。
示例:
-
addMinutes(2016-12-08T15:55:57.536Z;2)返回2016-12-08T15:57:57.536Z
-
addMinutes(2016-12-08T15:55:57.536Z;-2)返回2016-12-08T15:53:57.536Z
addHours (日期;数字) addhours-date-number
将给定小时数添加到日期后返回新日期。 要减去小时数,请输入负数。
示例:
-
addHours(2016-12-08T15:55:57.536Z; 2)返回2016-12-08T17:55:57.536Z
-
addHours(2016-12-08T15:55:57.536Z;-2)返回2016-12-08T13:55:57.536Z
addDays (日期;数字) adddays-date-number
将给定天数添加到日期后返回新日期。 要减去天数,请输入一个负数。
示例:
-
addDays(2016-12-08T15:55:57.536Z;2)返回2016-12-10T15:55:57.536Z
-
addDays(2016-12-08T15:55:57.536Z;-2)返回2016-12-6T15:55:57.536Z
addWeekDays(日期;数字)
[新!]{class="badge informative"}
将工作日数添加到日期。 只添加整整数值(小数值会向下舍入)。
示例:
addWeekDays("2016-12-08T15:55:57.536Z"; 2)
返回2016-12-12T15:55:57.536ZaddWeekDays("2016-12-08T15:55:57.536Z"; -2)
返回2016-12-06T15:55:57.536Z
addMonths(日期;数字)
向日期添加指定月份数后,返回新日期。 要减去月份,请输入负数。
示例:
-
addMonths(2016-08-08T15:55:57.536Z;2)返回2016-10-08T15:55:57.536Z
-
addMonths(2016-08-08T15:55:57.536Z;-2)返回2016-06-08T15:55:57.536Z
addYears (日期;数字)
将给定年数添加到日期后返回新日期。 要减去年数,请输入一个负数。
示例:
-
addYears(2016-08-08T15:55:57.536Z;2)返回2018-08-08T15:55:57.536Z
-
addYears(2016-12-08T15:55:57.536Z; -2)返回2014-08-08T15:55:57.536Z
dayOfMonth(日期)
[新!]{class="badge informative"}
按介于1和31之间的数字返回日期的月中日。
示例:
-
dayOfMonth("2016-12-28T16:03:06.372Z")返回28
-
dayOfMonth("2015-01-05T11:36:39.138Z")返回5
dayOfWeek(日期)
[新!]{class="badge informative"}
按数值返回日期在一周中的哪一天为1 (星期日)和7 (星期六)之间。
示例:
-
dayOfWeek("2016-12-28T16:03:06.372Z")返回4
-
dayOfWeek("2016-12-25T16:03:06.372Z")返回1
daysInMonth(日期)
[新!]{class="badge informative"}
返回给定日期所在月份的总天数。
示例:
-
daysInMonth("2016-01-01T00:00:00.000Z")返回31
-
daysInMonth("2016-02-01T00:00:00.000Z")返回29
daysInSplitWeek(日期)
[新!]{class="badge informative"}
返回日期与周末或月末(无论何者先到)之间的工作日总数。
示例:
-
daysInSplitWeek("2016-12-28T16:03:06.372Z")返回3
-
daysInSplitWeek("2016-01-25T16:03:06.372Z")返回5
daysInYear(日期)
[新!]{class="badge informative"}
返回给定日期一年中的总天数(常规年为365,闰年为366)。
示例:
-
daysInYear("2016-06-01T00:00:00.000Z")返回366
-
daysInYear("2015-06-01T00:00:00.000Z")返回365
dateMax(date1; date2; …)
[新!]{class="badge informative"}
返回列表中的最新(最新)日期。
示例:
-
dateMax("2016-06-01T00:00:00.000Z"; "2016-12-01T00:00:00.000Z")返回2016-12-01T00:00:00.000Z
-
dateMax("2015-01-01T00:00:00.000Z"; "2016-06-15T00:00:00.000Z"; "2014-03-20T00:00:00.000Z")返回2016-06-15T00:00:00.000Z
dateMin(date1; date2; …)
[新!]{class="badge informative"}
返回列表中最早的日期。
示例:
-
dateMin("2016-06-01T00:00:00.000Z"; "2016-12-01T00:00:00.000Z")返回2016-06-01T00:00:00.000Z
-
dateMin("2015-01-01T00:00:00.000Z"; "2016-06-15T00:00:00.000Z"; "2014-03-20T00:00:00.000Z")返回2014-03-20T00:00:00.000Z
endOfMonth(日期)
[新!]{class="badge informative"}
返回给定日期所在月份的最后一个时刻 — 最后一天的最后一个毫秒数(23:59:59.999)。 自动计入月内的天数,包括闰年。
示例:
-
endOfMonth("2016-06-15T12:30:00.000Z")返回2016-06-30T23:59:59.999Z
-
endOfMonth("2016-01-01T00:00:00.000Z")返回2016-01-31T23:59:59.999Z
-
endOfMonth("2016-02-01T00:00:00.000Z")返回2016-02-29T23:59:59.999Z
小时(日期)
[新!]{class="badge informative"}
以0到23之间的数字返回日期的小时数。
示例:
-
hour("2016-12-08T15:55:57.536Z")返回15
-
hour("2016-12-08T00:00:00.000Z")返回0
isWeekend(日期)
[新!]{class="badge informative"}
如果日期为星期六或星期日,则返回true,如果为其他任何日期,则返回false。 结果按场景配置的时区确定。
示例:
-
isWeekend("2016-12-10T00:00:00.000Z")返回true(星期六)
-
isWeekend("2016-12-11T00:00:00.000Z")返回true(星期日)
-
isWeekend("2016-12-12T00:00:00.000Z")返回false(星期一)
-
isWeekend("2016-12-09T00:00:00.000Z")返回false(星期五)
分钟(日期)
[新!]{class="badge informative"}
以0到59之间的数字返回日期的分钟数。
示例:
-
minute("2016-12-08T15:55:57.536Z")返回55
-
minute("2016-12-08T15:00:00.000Z")返回0
月(日期)
[新!]{class="badge informative"}
以1到12之间的数字返回日期的月份。
示例:
-
month("2016-12-08T15:55:57.536Z")返回12
-
month("2016-01-08T15:55:57.536Z")返回1
秒(日期)
[新!]{class="badge informative"}
以0到59之间的数字返回日期的秒数。
示例:
-
second("2016-12-08T15:55:57.536Z")返回57
-
second("2016-12-08T15:55:00.000Z")返回0
startOfMonth(日期)
[新!]{class="badge informative"}
返回给定日期所在月份的第一时刻 — 第1天的午夜(00:00:00.000)。 其结果是时区感知的。
示例:
-
startOfMonth("2016-06-15T12:30:00.000Z")返回2016-06-01T00:00:00.000Z
-
startOfMonth("2024-02-14T08:00:00.000Z")返回2024-02-01T00:00:00.000Z
weekDayDiff(date2; date1)
[新!]{class="badge informative"}
返回两个日期之间的工作日数,其中考虑了这些日期的时间戳。 例如,如果开始时间为下午3点,则开始日期将不会计为全天。
示例:
-
weekDayDiff("2016-12-07T12:00:00.000Z"; "2016-12-05T00:00:00.000Z")返回2.5
-
weekDayDiff("2016-12-09T15:00:00.000Z"; "2016-12-05T15:00:00.000Z")返回4
workMinutesDiff(date1; date2)
[新!]{class="badge informative"}
返回两个日期之间的计划工作分钟数(基于标准星期一至星期五的上午9点至下午5点的计划)。
示例:
-
workMinutesDiff("2016-12-05T09:00:00.000Z"; "2016-12-05T17:00:00.000Z")返回480
-
workMinutesDiff("2016-12-05T09:00:00.000Z"; "2016-12-06T17:00:00.000Z")返回960
年(日期)
[新!]{class="badge informative"}
以4位数字返回日期的年份。
示例:
-
year("2016-12-08T15:55:57.536Z")返回2016
-
year("2000-01-01T00:00:00.000Z")返回2000
setSecond (日期;数字)
此函数使用参数中指定的秒数返回新日期。
指定从0到59的数字。 如果数字超出该范围,则函数返回前一分钟(对于负数)或后续分钟(对于正数)的秒数。
如果您需要指定超出范围的数字,我们建议您使用 addSeconds,如上文addSeconds (date; number)部分所述。
示例:
-
setSecond(2015-10-07T11:36:39.138Z;10)返回2015-10-07T11:36:10.138Z
-
setSecond(2015-10-07T11:36:39.138Z; 61)返回2015-10-07T11:37:01.138Z
setMinute (日期;数字)
此函数使用参数中指定的分钟数返回一个新日期。
指定从0到59的数字。 如果数字超出该范围,此函数将返回上一小时(对于负数)或后续小时(对于正数)的分钟数。
如果您需要指定超出范围的数字,我们建议您使用addMinutes,如上文addMinutes (date; number)中所述。
示例:
-
setMinute(2015-10-07T11:36:39.138Z;10)返回2015-10-07T11:10:39.138Z
-
setMinute(2015-10-07T11:36:39.138Z;61)返回2015-10-07T12:01:39.138Z
setHour(日期;数字)
此函数使用参数中指定的小时数返回一个新日期。
指定从0到23的数字。 如果数字在此范围之外,此函数将返回前一日(对于负数)或后续日(对于正数)的小时数。
如果您需要指定超出范围的数字,我们建议您使用addHours,如addHours (date; number)中所述。
示例:
-
setHour(2015-08-07T11:36:39.138Z;6)返回2015-08-07T06:36:39.138Z
-
setHour(2015-08-07T11:36:39.138;-6)返回2015-08-06T18:36:39.138Z
setDay (日期;英文的日期编号/名称)
此函数使用参数中指定的日期返回一个新日期。
您可以使用此函数设置星期几,星期日为1,星期六为7。 如果指定从1到7的数字,则结果日期在当前(星期日到星期六)周内。 如果此数字超出该范围,则此函数返回上一周(对于负数)或后续周(对于正数)中的某天。
如果您需要指定超出此范围的数字,我们建议您使用addDays,如上文addDays (date; number)中所述。
示例:
-
setDay(2018-06-27T11:36:39.138Z;Monday)返回2018-06-25T11:36:39.138Z
-
setDay(2018-06-27T11:36:39.138Z;1)返回2018-06-24T11:36:39.138Z
-
setDay(2018-06-27T11:36:39.138Z;7)返回2018-06-30T11:36:39.138Z
setDate (日期;数字)
此函数返回一个新日期,其中包含在参数中指定的月份日期。
指定从1到31的数字。 如果数字在此范围之外,此函数将返回上个月中的一天(对于负数)或后续的月份(对于正数)。
示例:
-
setDate(2015-08-07T11:36:39.138Z;5)返回2015-08-05T11:36:39.138Z
-
setDate(2015-08-07T11:36:39.138Z;32)返回2015-09-01T11:36:39.138Z
setMonth(日期;英文月份编号/名称)
此函数使用参数中指定的月份返回一个新日期。
指定从1到12的数字。 如果数字超出此范围,此函数返回上一年(对于负数)或后续年(对于正数)中的月。
示例:
-
setMonth(2015-08-07T11:36:39.138Z;5)返回2015-05-07T11:36:39.138Z
-
setMonth(2015-08-07T11:36:39.138Z;17)返回2016-05-07T11:36:39.138Z
-
setMonth(2015-08-07T11:36:39.138Z;january)返回2015-01-07T12:36:39.138Z
setYear(日期;数字)
返回具有参数中指定的年份的新日期。
示例:
-
setYear(2015-08-07T11:36:39.138Z;2017)返回2017-08-07T11:36:39.138Z
formatDate (日期;格式;[时区])
当您有日期值(如12-10-2021 20:30)且要将其格式化为文本值(如Dec 10, 2021 8:30 PM)时,请使用此函数。
例如,当您需要在同一场景中将一个应用程序或Web服务的日期格式更改为连接的应用程序或Web服务的日期格式时,这将很有用。
有关详细信息,请参阅文章项目数据类型中的日期和文本。
参数
(可选)用于指定用于转换的时区。
有关可识别时区的列表,请参阅Wikipedia tz数据库时区列表中的“TZ数据库名称”列。 函数仅将此列中列出的值识别为有效时区。 将忽略任何其他值,并改为使用配置文件中指定的方案时区。
如果忽略此参数,将应用用户档案设置中指定的方案时区。
示例: Europe/Prague, UTC
如果提供了其他类型,则应用类型强制。 有关详细信息,请参阅类型强制。
返回值和类型
formatDate函数根据指定的格式和时区返回给定日期值的文本表示形式。 数据类型为文本。
示例:在这些示例中,方案和Web时区都设置为Europe/Prague。
-
formatDate(1. Date created;MM/DD/YYYY)返回10/01/2018
-
formatDate(1. Date created; YYYY-MM-DD hh:mm A)返回2018-10-01 09:32 AM
-
formatDate(1. Date created;DD.MM.YYYY HH:mm;UTC)返回01.10.2018 07:32
-
formatDate(now;DD.MM.YYYY HH:mm)返回19.03.2019 15:30
parseDate (文本;格式;[时区])
当您具有表示日期(如12-10-2019 20:30或Aug 18, 2019 10:00 AM)的文本值,并且要将其转换(解析)为日期值(二进制计算机可读表示法)时,请使用此函数。 有关详细信息,请参阅文章项目数据类型中的日期和文本。
参数
第二列指示预期类型。 如果提供了其他类型,则应用类型强制。 有关详细信息,请参阅类型强制。
(可选)用于指定用于转换的时区。
有关可识别时区的列表,请参阅Wikipedia tz数据库时区列表中的“TZ数据库名称”列。 函数仅将此列中列出的值识别为有效时区。 将忽略任何其他值,并改为使用配置文件中指定的方案时区。
如果忽略此参数,将应用用户档案设置中指定的方案时区。
示例: Europe/Prague, UTC
如果提供了其他类型,则应用类型强制。 有关详细信息,请参阅类型强制。
返回值和类型
此函数根据指定的格式和时区将文本字符串转换为日期。 值的数据类型是Date。
示例:在以下示例中,返回的Date值是根据ISO 8601表示的,但结果的数据类型为Date。
-
parseDate(2016-12-28;YYYY-MM-DD)返回2016-12-28T00:00:00.000Z
-
parseDate(2016-12-28 16:03;YYYY-MM-DD HH:mm)返回2016-12-28T16:03:00.000Z
-
parseDate(2016-12-28 04:03 pm; YYYY-MM-DD hh:mm a)返回2016-12-28T16:03:06.000Z
-
parseDate(1482940986;X)返回2016-12-28T16:03:06.000Z
dateDifference (Date1; Date2; Unit)
返回表示两个日期之差的数字,以指定的单位表示。
从Date1减去Date2。
为unit参数使用以下时间值之一:
- 毫秒
- 秒
- 分钟
- 小时
- 天
- 星期
- 月
如果未指定单位,此函数将返回毫秒之差。
示例:
-
dateDifference(2021-05-11T18:10:00.000Z;2021-05-11T18:00:00.000Z)返回
600,000 -
dateDifference(2021-05-11T18:10:00.000Z;2021-05-11T18:00:00.000Z;hours)返回
4 -
dateDifference2021-06-11T18:10:00.000Z;2021-05-11T18:00:00.000Z;months)返回
1
其他示例
如何计算月中每周的第n天
此部分改编自Exceljet网页中的Workfront Fusion,该网页介绍了如何获取一个月中的第n天。
如果您需要计算与每月第n天对应的日期(例如,第一个星期二、第三个星期五等),可以使用以下公式:
{{addDays(setDate(1.date; 1); 1.n * 7 - formatDate(addDays(setDate(1.date; 1); "-" + 1.dow); "E"))}}
公式包含以下项:
如果您只想计算一个特定情况,例如,每逢星期三,则可以用相应的数字替换公式中的项1.n和2.dow。 对于当月的第二个星期三,您将使用以下值:
1.n=21.dow=31.date=now
说明:
setDate(now;1)返回当月的第一个月formatDate(....;E)返回星期几(1, 2, … 6)
如何计算日期之间的天数
一种方法是使用以下表达式:
{{round((2.value - 1.value) / 1000 / 60 / 60 / 24)}}
-
D1和D2的值必须为Date类型值。 如果它们是字符串类型值(例如,20.10.2018),请使用parseDate()函数将它们转换为日期类型值。 -
round()函数用于日期之一在夏令时时间段内,而另一个日期不在夏令时时间段内的情况。 在这些情况下,小时数差等于或少于一小时。 对于非整数结果,可以将其除以24。 你损失了一个小时的夏令时。 将其扁平化以便没有百分比
如何计算每月的最后一天/毫秒
例如,当您在搜索模块中指定日期范围时,如果该范围跨越整个前一个月为一个关闭间隔(该间隔包含其两个限制点),则需要计算当月的最后一天。
2019-09-01 ≤ D ≤ 2019-09-30
下面的公式显示了一种计算上个月最后一天的方法:
{{addDays(setDate(now; 1); -1)}}
在某些情况下,您不仅需要计算每月的最后一天,还需要计算每月的最后一毫秒:
2019-09-01T00:00:00.000Z ≤ D ≤ 2019-09-30T23:59:59.999Z
此公式显示了一种计算上个月最后一毫秒的方法:
{{parseDate(parseDate(formatDate(now; "YYYYMM01"); "YYYYMMDD"; "UTC") - 1; "x")}}
如果需要结果以使用时区设置,请忽略UTC参数:
{{parseDate(parseDate(formatDate(now; "YYYYMM01"); "YYYYMMDD") - 1; "x")}}
但是,最好改用半开间隔(排除其限制点之一的间隔),指定下个月的第一天,并将“小于或等于”运算符替换为“小于”,如下所示:
2019-09-01 ≤ D < 2019-10-01
2019-09-01T00:00:00.000Z ≤ D < 2019-10-01T00:00:00.000Z