日期與時間函式

變數

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.536Z
addWeekDays("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(date)

[新增!]{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 (日期;格式;[時區])

當您有Date值(例如12-10-2021 20:30)且想要格式化為Text值(例如Dec 10, 2021 8:30 PM)時,請使用此函式。

例如,當您需要將某個應用程式或Web服務的日期格式變更為相同案例中連線應用程式或Web服務的日期格式時,這個選項會很有用。

如需詳細資訊,請參閱文章專案資料型別中的日期和文字。

參數

參數
預期的資料型別*
作用
日期
日期
將日期值轉換為文字值。
格式
文字

可讓您使用日期/時間格式代號來指定格式。 如需詳細資訊,請參閱日期與時間格式的代號。

範例: DD.MM.YYYY HH:mm

時區
文字

(選用)可讓您指定用於轉換的時區。

如需可辨識時區的清單,請參閱Wikipedia tz資料庫時區清單中的「TZ資料庫名稱」欄。 函式只會將此欄中列出的值辨識為有效時區。 系統會忽略任何其他值,而改用設定檔中指定的案例時區。

如果您忽略此引數,則會套用設定檔設定中指定的情境時區。

範例: Europe/PragueUTC

如果提供不同的型別,則會套用型別強制執行。 如需詳細資訊,請參閱型別強制執行

傳回值和型別

formatDate函式會根據指定的格式和時區,傳回指定日期值的文字表示法。 資料型別為「文字」。

範例:​在這些範例中,案例和網頁時區都設為Europe/Prague

日期時間函式範例

  • formatDate(1. Date created;MM/DD/YYYY)

    傳回2018/10/01

  • 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:30Aug 18, 2019 10:00 AM)的Text值,而且您想要將其轉換(剖析)為Date值(二進位電腦可讀的表示法)時,請使用此函式。 如需詳細資訊,請參閱文章專案資料型別中的日期和文字。

參數

第二欄指出預期的型別。 如果提供不同的型別,則會套用型別強制執行。 如需詳細資訊,請參閱型別強制執行

參數
預期的資料型別*
作用
text
文字
將日期值轉換為文字值。
格式
文字

可讓您使用日期/時間格式代號來指定格式。 如需詳細資訊,請參閱日期與時間格式的代號。

範例: DD.MM.YYYY HH:mm

時區
文字

(選用)可讓您指定用於轉換的時區。

如需可辨識時區的清單,請參閱Wikipedia tz資料庫時區清單中的「TZ資料庫名稱」欄。 函式只會將此欄中列出的值辨識為有效時區。 系統會忽略任何其他值,而改用設定檔中指定的案例時區。

如果您忽略此引數,則會套用設定檔設定中指定的情境時區。

範例: Europe/PragueUTC

如果提供不同的型別,則會套用型別強制執行。 如需詳細資訊,請參閱型別強制執行

傳回值和型別

此函式根據您指定的格式和時區將文字字串轉換為日期。 值的資料型別為「日期」。

範例:​在下列範例中,傳回的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天

本節是根據Workfront Fusion在Exceljet網頁中改寫而成,該網頁說明如何取得一個月中的第n天。

如果您需要計算與當月第n天對應的日期(例如,第一個星期二、第三個星期五等),您可以使用下列公式:

計算第n天

{{addDays(setDate(1.date; 1); 1.n * 7 - formatDate(addDays(setDate(1.date; 1); "-" + 1.dow); "E"))}}

公式包含下列專案:

1.n

第n天:

  • 1 (第1個星期二)
  • 2 (第2個星期二)
  • 3 第3個星期二,依此類推
2.dow

星期:

  • 1 表示星期一
  • 2 表示星期二
  • 3 表示星期三
  • 4 表示星期四
  • 5 週五
  • 6 代表星期六
  • 7 代表星期日
1.date
日期決定月份。 若要計算當月一週的第n天,請使用now變數。

如果您只想計算一個特定案例,例如每逢星期三,您就可以將公式中的專案1.n2.dow取代為對應的數字。 對於當月的第二個星期三,您會使用下列值:

  • 1.n = 2
  • 1.dow = 3
  • 1.date = now

第N天變數值

說明:

  • setDate(now;1)傳回目前月份的第一個月
  • formatDate(....;E)傳回一週中的某天(1, 2, … 6)

如何計算日期之間的天數

一種可能是使用以下運算式:

計算日期之間的天數

{{round((2.value - 1.value) / 1000 / 60 / 60 / 24)}}
NOTE
  • D1D2的值必須是日期型別值。 如果是String型別值(例如20.10.2018),請使用parseDate()函式將它們轉換為Date型別值。

  • 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引數:

省略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

recommendation-more-help
workfront-fusion-help-workfront-fusion