---
sourceDocument: オーストラリア API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/api-reference

 Release :

    - australia

ft:locale :

    - ja-JP

ft:publication_title :

    - オーストラリア API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# DurationCalculator - グローバル

# DurationCalculator - グローバル {#ariaid-title1}

* リリースバージョン: Australia
* 
* 更新日 2026年03月12日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：17分

DurationCalculator スクリプトインクルードは、期間と期日を計算するためのメソッドを提供します。

## DurationCalculator:DurationCalculator( ) {#ariaid-title2}

DurationCalculator クラスのコンストラクター。
{#r_DC-DurationCalculator__table_ik1_1kp_4t__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 1. パラメーター]

{#r_DC-DurationCalculator__table_ik1_1kp_4t}  

    var dc = new DurationCalculator();

## DurationCalculator:calcDuration(Number seconds) {#ariaid-title3}

現在の開始日時に基づいて、期間 (秒) で渡された終了日時を計算します。
このメソッドは、 this.endDateTime、 this.seconds、および this.totalSeconds プロパティも更新された値で設定します。secondsプロパティは、作業スケジュールに基づく期間中に実行される作業の合計秒数を表します。totalSecondsプロパティは、作業時間と非作業時間の両方を含む、期間の開始時間と終了時間の間の合計秒数を表します。

このメソッドを呼び出す前に、期間に使用する開始時刻を指定して setStartDateTime() を呼び出す必要があります。
{#r_DC-calcDuration_N__table_pw4_gvb_4t__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| 秒 | 番号 | 終了日時、秒数、合計秒数の値を計算するために開始日時に追加する秒数。 |
[表 : 2. パラメーター]

{#r_DC-calcDuration_N__table_pw4_gvb_4t} {#r_DC-calcDuration_N__table_qw4_gvb_4t__entry__2}

| タイプ | 説明 |
|-|-|
| ブーリアン | 入力値が数値でない場合は False。 |
[表 : 3. 返される内容]

{#r_DC-calcDuration_N__table_qw4_gvb_4t}  

    var gdt = new GlideDateTime("2020-05-01 00:00:00");

    var dc = new DurationCalculator();
    dc.setStartDateTime(gdt);

    if(!dc.calcDuration(2*24*3600)){ // 2 days
      gs.log("*** Error calculating duration");
      return;
    }
    var secs = dc.getSeconds();
    var totalSecs = dc.getTotalSeconds();

    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

出力

    ***SCHEDULE DURATION: SECS=172800 TOTALSECS=970534 ENDTIME = 2020-05-03 00:00:00

## DurationCalculator - calcRelativeDueDate(GlideDateTime start, Number days, String endTime) {#ariaid-title4}

渡された開始時刻から始まり、現在のスケジュールとタイムゾーンを使用して日数を加算して期日を計算します。
calcRelativeDuration() によって開始される相対期間定義から、`calculator.calcRelativeDueDate(calculator.startDateTime, days)` として呼び出されます。作業の期日が決定されると、メソッドはその日の経過 endTime に時間を設定します。スケジュールに十分な日数が残っていない場合は、スケジュールの最終日を使用します。
{#r_DC-calcRelativeDueDate_GDT_N_S__table_vw4_gvb_4t__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| start | GlideDateTime | 計算の開始日を含む GlideDateTime オブジェクト。 |
| days | 番号 | 開始日に追加する日数。 |
| endTime | 文字列 | 計算された期日に作業が期限となる時刻。 空白の場合、デフォルトで作業日の終わりに設定されます。 形式:HH:mm:ss |
[表 : 4. パラメーター]

{#r_DC-calcRelativeDueDate_GDT_N_S__table_vw4_gvb_4t} {#r_DC-calcRelativeDueDate_GDT_N_S__table_ww4_gvb_4t__entry__2}

| タイプ | 説明 |
|-|-|
| ブーリアン | 完了日がスケジュール内にあるかどうかを示すフラグ。 可能な値： * true:完了日はスケジュール内です。 * false:完了日がスケジュール外です。このメソッドを呼び出す前にスケジュールが設定されていない場合は未定義です。 |
[表 : 5. 返される内容]

{#r_DC-calcRelativeDueDate_GDT_N_S__table_ww4_gvb_4t}  

    var dc = new DurationCalculator();
    var startTime = new GlideDateTime();

    // Settings for calculations
    // Optional: Specify the schedule to use for the following calculations
    dc.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    // Optional: Specify a different timezone to use
    dc.setTimeZone("Los Angeles");
    // Optional: Set a start date and time, otherwise the current time is assumed
    dc.setStartDateTime("2020-04-10 08:00:00")
    // Calculate end time, from number of seconds required in the schedule
    dc.calcDuration(3*24*3600); // 3 days
    dc.calcRelativeDueDate(startTime, "3", "07:00:00");

## DurationCalculator:calcRelativeDuration(文字列 relativeDurationID) {#ariaid-title5}

指定された相対期間スクリプトを使用して期間を計算します。
完了すると、 this.endDateTime プロパティと this.seconds プロパティが計算の結果を示すように設定されます。
{#r_DC-calcRelativeDuration_S__table_rw4_gvb_4t__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| relativeDurationID | 文字列 | 相対期間スケジュールのsys_id (テーブル cmn_relative_duration)。 |
[表 : 6. パラメーター]

{#r_DC-calcRelativeDuration_S__table_rw4_gvb_4t} {#r_DC-calcRelativeDuration_S__table_sw4_gvb_4t__entry__2}

| タイプ | 説明 |
|-|-|
| ブーリアン | 期間スクリプトの結果。 |
[表 : 7. 返される内容]

{#r_DC-calcRelativeDuration_S__table_sw4_gvb_4t}  

    var dc = new DurationCalculator();
    dc.calcRelativeDuration('08fcd0830a0a1b2600074f56b1ad7cb');

## DurationCalculator:calcScheduleDuration(文字列 startTime, 文字列 endTime) {#ariaid-title6}

既に指定されたスケジュールとオプションで上書きされたタイムゾーン内の startTime と endTime の間の期間を返します。
このメソッドは、現在のスケジュールオブジェクトの this.endDateTime、 this.seconds、および this.totalSeconds も設定します。
{#r_DC-calcScheduleDuration_S_S__table_lw4_gvb_4t__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| startTime | 文字列 | オプション。終了時間の表示値。 デフォルト:現在の日付と時刻を使用します ( setStartDateTime() を使用して設定)。このパラメーターが渡されない場合は、 `dur.calcScheduleDuration("", endDateTime);` などのプレースホルダーを渡す必要があります。 |
| endTime | 文字列 | オプション。開始時間の表示値。 デフォルト: 現在の日付と時刻を使用します ( setEndDateTime() を使用して設定)。 |
[表 : 8. パラメーター]

{#r_DC-calcScheduleDuration_S_S__table_lw4_gvb_4t} {#r_DC-calcScheduleDuration_S_S__table_mw4_gvb_4t__entry__2}

| タイプ | 説明 |
|-|-|
| 番号 | スケジュール期間。endTime が startTime より前の場合は 0 を返します。 単位：秒 |
[表 : 9. 返される内容]

{#r_DC-calcScheduleDuration_S_S__table_mw4_gvb_4t}  

    var dur = new DurationCalculator();

    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae');
    dur.calcScheduleDuration("2019-01-02 11:00:00", "2019-01-06 09:00:00");
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();
    var endDateTime = dur.getEndDateTime() + "";

    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

出力

    ***SCHEDULE DURATION: SECS=97200 TOTALSECS=338400 ENDTIME = 2019-01-06 09:00:00

## DurationCalculator:calcScheduleDuration(GlideDateTime startTime, GlideDateTime endTime) {#ariaid-title7}

既に指定されたスケジュールとオプションで上書きされたタイムゾーン内の startTime と endTime の間の期間を返します。
このメソッドは、現在のスケジュールオブジェクトの this.endDateTime、 this.seconds、および this.totalSeconds も設定します。
{#r_DC-calcScheduleDuration_GDT_GDT__table_nw4_gvb_4t__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| startTime | GlideDateTime | オプション。使用する開始時間を含む GlideDateTime オブジェクト。 デフォルト:現在の日付と時刻を使用します ( setStartDateTime() を使用して設定)。このパラメーターが渡されない場合は、 `dur.calcScheduleDuration("", endDateTime);` などのプレースホルダーを渡す必要があります。 |
| endTime | GlideDateTime | オプション。使用する終了時間を含む GlideDateTime オブジェクト。 デフォルト: 現在の日付と時刻を使用します ( setEndDateTime() を使用して設定)。 |
[表 : 10. パラメーター]

{#r_DC-calcScheduleDuration_GDT_GDT__table_nw4_gvb_4t} {#r_DC-calcScheduleDuration_GDT_GDT__table_mw4_gvb_4t__entry__2}

| タイプ | 説明 |
|-|-|
| 番号 | スケジュール期間。endTime が startTime より前の場合は 0 を返します。 単位：秒 |
[表 : 11. 返される内容]

{#r_DC-calcScheduleDuration_GDT_GDT__table_mw4_gvb_4t}  

    var startDateTime = new GlideDateTime("2020-11-02 11:00:00");
    // Instantiate a new GlideDateTime object which has the end date as the current date and time
    var endDateTime = new GlideDateTime(); 
    var dur = new DurationCalculator();

    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.calcScheduleDuration(startDateTime, endDateTime);
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();

    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

出力

    ***SCHEDULE DURATION: SECS=293734.24 TOTALSECS=970534 ENDTIME = 2020-11-13 16:35:34

## DurationCalculator:getEndDateTime( ) {#ariaid-title8}

期間の終了日時を示す、calcDuration/calcRelativeDuration によって設定されたendDateTimeプロパティを取得します。
{#r_DC-getEndDateTime__table_gvv_nlz_nt__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 12. パラメーター]

{#r_DC-getEndDateTime__table_gvv_nlz_nt} {#r_DC-getEndDateTime__table_hvv_nlz_nt__entry__2}

| タイプ | 説明 |
|-|-|
| GlideDateTime | 終了 日時。 |
[表 : 13. 返される内容]

{#r_DC-getEndDateTime__table_hvv_nlz_nt}  

    var dc = new DurationCalculator();
    dc.calcDuration(52);
    gs.print(dc.getEndDateTime());

2012-04-17 20:57:27

## DurationCalculator:getSeconds( ) {#ariaid-title9}

期間中に実行される作業の合計秒数を示す、calcDuration/calcRelativeDuration によって設定されたthis.secondsプロパティを返します。
これは、開始時間と終了時間の間の合計時間ではなく、合計作業時間であり、作業時間の割合を決定するために使用されます。
{#r_DC-getSeconds__table_ivv_nlz_nt__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 14. パラメーター]

{#r_DC-getSeconds__table_ivv_nlz_nt} {#r_DC-getSeconds__table_jvv_nlz_nt__entry__2}

| タイプ | 説明 |
|-|-|
| 番号 | 合計作業時間 (秒)。 |
[表 : 15. 返される内容]

{#r_DC-getSeconds__table_jvv_nlz_nt}  

    var startDateTime = new GlideDateTime("2020-11-02 11:00:00");
    // Instantiate a new GlideDateTime object which has the end date as the current date and time
    var endDateTime = new GlideDateTime(); 
    var dur = new DurationCalculator();

    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.calcScheduleDuration(startDateTime, endDateTime);
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();

    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

出力

    ***SCHEDULE DURATION: SECS=293734.24 TOTALSECS=970534 ENDTIME = 2020-11-13 16:35:34

## DurationCalculator:getTotalSeconds( ) {#ariaid-title10}

calculate(record) の呼び出しによって設定されたtotalSeconds値を返します。
totalSecondsプロパティは、作業時間と非作業時間の両方を含む、期間の開始時間と終了時間の間の合計秒数を表します。
{#r_DC-getTotalSeconds__table_qjq_bs1_4t__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 16. パラメーター]

{#r_DC-getTotalSeconds__table_qjq_bs1_4t} {#r_DC-getTotalSeconds__table_rjq_bs1_4t__entry__2}

| タイプ | 説明 |
|-|-|
| 番号 | 合計秒数。 |
[表 : 17. 返される内容]

{#r_DC-getTotalSeconds__table_rjq_bs1_4t}  

    var startDateTime = new GlideDateTime("2020-11-02 11:00:00");
    // Instantiate a new GlideDateTime object which has the end date as the current date and time
    var endDateTime = new GlideDateTime(); 
    var dur = new DurationCalculator();

    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.calcScheduleDuration(startDateTime, endDateTime);
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();

    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

出力

    ***SCHEDULE DURATION: SECS=293734.24 TOTALSECS=970534 ENDTIME = 2020-11-13 16:35:34

## DurationCalculator - isAfter(GlideDateTime dt, String tm) {#ariaid-title11}

渡された時間を、渡された GlideDateTime オブジェクトの時間値と比較します。
{#r_DC-isAfter_GDT_S__table_tw4_gvb_4t__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| dt | GlideDateTime または文字列 | 渡された tm 値と比較する GlideDateTime オブジェクトまたは表示値の日時。表示値の日時を渡すと、メソッドはそれを GlideDateTime オブジェクトに変換します。 |
| TM | 文字列 | GlideDateTime オブジェクトの時間値と比較する時間の値を表示します。同じ日付を前提とします。 形式:HH:mm:ss |
[表 : 18. パラメーター]

{#r_DC-isAfter_GDT_S__table_tw4_gvb_4t} {#r_DC-isAfter_GDT_S__table_uw4_gvb_4t__entry__2}

| タイプ | 説明 |
|-|-|
| ブーリアン | 渡された時間値 (tm) が GlideDateTime オブジェクト (dt) の時間より後であるかどうかを示すフラグ。 可能な値： * true: tm は dt後です。 * false tm は dtの後ではありません。 |
[表 : 19. 返される内容]

{#r_DC-isAfter_GDT_S__table_uw4_gvb_4t}  

    var dc = new DurationCalculator();
    gs.print(dc.isAfter("2020-04-10 08:00:00", "09:00:00"));

スクリプト:true

## DurationCalculator - setSchedule(文字列 schedId, 文字列 timezone) {#ariaid-title12}

期日の計算に使用するスケジュールとタイムゾーンを設定します。
{#r_DC-setSchedule_S_S__table_y5v_nlz_nt__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| スケジュール ID | 文字列 | 設定するスケジュールのSys_id。 テーブル:スケジュール \[cmn_schedule\]。 |
| タイムゾーン | 文字列 | オプション。設定するタイムゾーン。 デフォルト:ユーザーのタイムゾーン。 |
[表 : 20. パラメーター]

{#r_DC-setSchedule_S_S__table_y5v_nlz_nt} {#r_DC-setSchedule_S_S__table_z5v_nlz_nt__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 21. 返される内容]

{#r_DC-setSchedule_S_S__table_z5v_nlz_nt}  
次のコード例は、このメソッドを呼び出す方法を示しています。

    var startDateTime = new GlideDateTime("2020-11-02 11:00:00");
    // Instantiate a new GlideDateTime object which has the end date as the current date and time
    var endDateTime = new GlideDateTime(); 
    var dur = new DurationCalculator();

    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.calcScheduleDuration(startDateTime, endDateTime);
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();

    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

出力:

    ***SCHEDULE DURATION: SECS=293734.24 TOTALSECS=970534 ENDTIME = 2020-11-13 16:35:34

## DurationCalculator:setStartDateTime(文字列 start) {#ariaid-title13}

期間計算の開始日時を設定します。
{#r_DC-setStartDateTime_S__table_cvv_nlz_nt__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| 開始 | 文字列 | 後続の計算のために開始時間を GMT で表示します。 |
[表 : 22. パラメーター]

{#r_DC-setStartDateTime_S__table_cvv_nlz_nt} {#r_DC-setStartDateTime_S__table_dvv_nlz_nt__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 23. 返される内容]

{#r_DC-setStartDateTime_S__table_dvv_nlz_nt}  

    var dc = new DurationCalculator();
    dc.setStartDateTime("2020-04-10 08:00:00")

## DurationCalculator:setStartDateTime(GlideDateTime の説明) {#ariaid-title14}

期間計算の開始日時を設定します。
{#r_DC-setStartDateTime_GDT_N__table_evv_nlz_nt__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| description | GlideDateTime | 後続の計算のための GMT での開始時間を含む GlideDateTime オブジェクト。 |
[表 : 24. パラメーター]

{#r_DC-setStartDateTime_GDT_N__table_evv_nlz_nt} {#r_DC-setStartDateTime_GDT_N__table_fvv_nlz_nt__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 25. 返される内容]

{#r_DC-setStartDateTime_GDT_N__table_fvv_nlz_nt}  

    var startDateTime = new GlideDateTime("2020-11-02 11:00:00"); 
    var dur = new DurationCalculator();

    // Set 9-5 weekday schedule.
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.setStartDateTime(startDateTime);

## DurationCalculator - setTimeZone(文字列 timezone) {#ariaid-title15}

期日の計算に使用するタイムゾーンを設定します。
{#r_DC-setTimeZone_S__table_avv_nlz_nt__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| タイムゾーン | 文字列 | タイムゾーンの値。 |
[表 : 26. パラメーター]

{#r_DC-setTimeZone_S__table_avv_nlz_nt} {#r_DC-setTimeZone_S__table_bvv_nlz_nt__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 27. 返される内容]

{#r_DC-setTimeZone_S__table_bvv_nlz_nt}  

    var dc = new DurationCalculator();
    dc.setTimeZone("Los Angeles");


