DurationCalculator - グローバル

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:17分
  • DurationCalculator スクリプトインクルードは、期間と期日を計算するためのメソッドを提供します。

    DurationCalculator:DurationCalculator( )

    DurationCalculator クラスのコンストラクター。

    表 : 1. パラメーター
    名前 タイプ 説明
    なし
    var dc = new DurationCalculator();

    DurationCalculator:calcDuration(Number seconds)

    現在の開始日時に基づいて、期間 (秒) で渡された終了日時を計算します。

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

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

    表 : 2. パラメーター
    名前 タイプ 説明
    番号 終了日時、秒数、合計秒数の値を計算するために開始日時に追加する秒数。
    表 : 3. 返される内容
    タイプ 説明
    ブーリアン 入力値が数値でない場合は False。
    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)

    渡された開始時刻から始まり、現在のスケジュールとタイムゾーンを使用して日数を加算して期日を計算します。

    calcRelativeDuration() によって開始される相対期間定義から、calculator.calcRelativeDueDate(calculator.startDateTime, days) として呼び出されます。作業の期日が決定されると、メソッドはその日の経過 endTime に時間を設定します。スケジュールに十分な日数が残っていない場合は、スケジュールの最終日を使用します。

    表 : 4. パラメーター
    名前 タイプ 説明
    start GlideDateTime 計算の開始日を含む GlideDateTime オブジェクト。
    days 番号 開始日に追加する日数。
    endTime 文字列 計算された期日に作業が期限となる時刻。

    空白の場合、デフォルトで作業日の終わりに設定されます。

    形式:HH:mm:ss

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

    指定された相対期間スクリプトを使用して期間を計算します。

    完了すると、 this.endDateTime プロパティと this.seconds プロパティが計算の結果を示すように設定されます。

    表 : 6. パラメーター
    名前 タイプ 説明
    relativeDurationID 文字列 相対期間スケジュールのsys_id (テーブル cmn_relative_duration)。
    表 : 7. 返される内容
    タイプ 説明
    ブーリアン 期間スクリプトの結果。
    var dc = new DurationCalculator();
    dc.calcRelativeDuration('08fcd0830a0a1b2600074f56b1ad7cb');

    DurationCalculator:calcScheduleDuration(文字列 startTime, 文字列 endTime)

    既に指定されたスケジュールとオプションで上書きされたタイムゾーン内の startTimeendTime の間の期間を返します。

    このメソッドは、現在のスケジュールオブジェクトの this.endDateTimethis.seconds、および this.totalSeconds も設定します。

    表 : 8. パラメーター
    名前 タイプ 説明
    startTime 文字列 オプション。終了時間の表示値。

    デフォルト:現在の日付と時刻を使用します ( setStartDateTime() を使用して設定)。このパラメーターが渡されない場合は、 dur.calcScheduleDuration("", endDateTime); などのプレースホルダーを渡す必要があります。

    endTime 文字列 オプション。開始時間の表示値。

    デフォルト: 現在の日付と時刻を使用します ( setEndDateTime() を使用して設定)。

    表 : 9. 返される内容
    タイプ 説明
    番号 スケジュール期間。endTimestartTime より前の場合は 0 を返します。

    単位:秒

    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)

    既に指定されたスケジュールとオプションで上書きされたタイムゾーン内の startTimeendTime の間の期間を返します。

    このメソッドは、現在のスケジュールオブジェクトの this.endDateTimethis.seconds、および this.totalSeconds も設定します。

    表 : 10. パラメーター
    名前 タイプ 説明
    startTime GlideDateTime オプション。使用する開始時間を含む GlideDateTime オブジェクト。

    デフォルト:現在の日付と時刻を使用します ( setStartDateTime() を使用して設定)。このパラメーターが渡されない場合は、 dur.calcScheduleDuration("", endDateTime); などのプレースホルダーを渡す必要があります。

    endTime GlideDateTime オプション。使用する終了時間を含む GlideDateTime オブジェクト。

    デフォルト: 現在の日付と時刻を使用します ( setEndDateTime() を使用して設定)。

    表 : 11. 返される内容
    タイプ 説明
    番号 スケジュール期間。endTimestartTime より前の場合は 0 を返します。

    単位:秒

    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( )

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

    表 : 12. パラメーター
    名前 タイプ 説明
    なし
    表 : 13. 返される内容
    タイプ 説明
    GlideDateTime 終了 日時。
    var dc = new DurationCalculator();
    dc.calcDuration(52);
    gs.print(dc.getEndDateTime());

    2012-04-17 20:57:27

    DurationCalculator:getSeconds( )

    期間中に実行される作業の合計秒数を示す、calcDuration/calcRelativeDuration によって設定されたthis.secondsプロパティを返します。

    これは、開始時間と終了時間の間の合計時間ではなく、合計作業時間であり、作業時間の割合を決定するために使用されます。

    表 : 14. パラメーター
    名前 タイプ 説明
    なし
    表 : 15. 返される内容
    タイプ 説明
    番号 合計作業時間 (秒)。
    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( )

    calculate(record) の呼び出しによって設定されたtotalSeconds値を返します。

    totalSecondsプロパティは、作業時間と非作業時間の両方を含む、期間の開始時間と終了時間の間の合計秒数を表します。

    表 : 16. パラメーター
    名前 タイプ 説明
    なし
    表 : 17. 返される内容
    タイプ 説明
    番号 合計秒数。
    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)

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

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

    形式:HH:mm:ss

    表 : 19. 返される内容
    タイプ 説明
    ブーリアン 渡された時間値 (tm) が GlideDateTime オブジェクト (dt) の時間より後であるかどうかを示すフラグ。
    可能な値:
    • true: tmdt後です。
    • false tmdtの後ではありません。
    var dc = new DurationCalculator();
    gs.print(dc.isAfter("2020-04-10 08:00:00", "09:00:00"));

    スクリプト:true

    DurationCalculator - setSchedule(文字列 schedId, 文字列 timezone)

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

    表 : 20. パラメーター
    名前 タイプ 説明
    スケジュール ID 文字列 設定するスケジュールのSys_id。

    テーブル:スケジュール [cmn_schedule]。

    タイムゾーン 文字列 オプション。設定するタイムゾーン。

    デフォルト:ユーザーのタイムゾーン。

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

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

    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)

    期間計算の開始日時を設定します。

    表 : 22. パラメーター
    名前 タイプ 説明
    開始 文字列 後続の計算のために開始時間を GMT で表示します。
    表 : 23. 返される内容
    タイプ 説明
    なし
    var dc = new DurationCalculator();
    dc.setStartDateTime("2020-04-10 08:00:00")

    DurationCalculator:setStartDateTime(GlideDateTime の説明)

    期間計算の開始日時を設定します。

    表 : 24. パラメーター
    名前 タイプ 説明
    description GlideDateTime 後続の計算のための GMT での開始時間を含む GlideDateTime オブジェクト。
    表 : 25. 返される内容
    タイプ 説明
    なし
    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)

    期日の計算に使用するタイムゾーンを設定します。

    表 : 26. パラメーター
    名前 タイプ 説明
    タイムゾーン 文字列 タイムゾーンの値。
    表 : 27. 返される内容
    タイプ 説明
    なし
    var dc = new DurationCalculator();
    dc.setTimeZone("Los Angeles");