DurationCalculator - グローバル
DurationCalculator スクリプトインクルードは、期間と期日を計算するためのメソッドを提供します。
DurationCalculator:DurationCalculator( )
DurationCalculator クラスのコンストラクター。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
var dc = new DurationCalculator();
DurationCalculator:calcDuration(Number seconds)
現在の開始日時に基づいて、期間 (秒) で渡された終了日時を計算します。
このメソッドは、 this.endDateTime、 this.seconds、および this.totalSeconds プロパティも更新された値で設定します。secondsプロパティは、作業スケジュールに基づく期間中に実行される作業の合計秒数を表します。totalSecondsプロパティは、作業時間と非作業時間の両方を含む、期間の開始時間と終了時間の間の合計秒数を表します。
このメソッドを呼び出す前に、期間に使用する開始時刻を指定して setStartDateTime() を呼び出す必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| 秒 | 番号 | 終了日時、秒数、合計秒数の値を計算するために開始日時に追加する秒数。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 入力値が数値でない場合は 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 に時間を設定します。スケジュールに十分な日数が残っていない場合は、スケジュールの最終日を使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| start | GlideDateTime | 計算の開始日を含む GlideDateTime オブジェクト。 |
| days | 番号 | 開始日に追加する日数。 |
| endTime | 文字列 | 計算された期日に作業が期限となる時刻。 空白の場合、デフォルトで作業日の終わりに設定されます。 形式:HH:mm:ss |
| タイプ | 説明 |
|---|---|
| ブーリアン | 完了日がスケジュール内にあるかどうかを示すフラグ。 可能な値:
|
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 プロパティが計算の結果を示すように設定されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| relativeDurationID | 文字列 | 相対期間スケジュールのsys_id (テーブル cmn_relative_duration)。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 期間スクリプトの結果。 |
var dc = new DurationCalculator();
dc.calcRelativeDuration('08fcd0830a0a1b2600074f56b1ad7cb');
DurationCalculator:calcScheduleDuration(文字列 startTime, 文字列 endTime)
既に指定されたスケジュールとオプションで上書きされたタイムゾーン内の startTime と endTime の間の期間を返します。
このメソッドは、現在のスケジュールオブジェクトの this.endDateTime、 this.seconds、および this.totalSeconds も設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| startTime | 文字列 | オプション。終了時間の表示値。 デフォルト:現在の日付と時刻を使用します ( setStartDateTime() を使用して設定)。このパラメーターが渡されない場合は、 |
| endTime | 文字列 | オプション。開始時間の表示値。 デフォルト: 現在の日付と時刻を使用します ( setEndDateTime() を使用して設定)。 |
| タイプ | 説明 |
|---|---|
| 番号 | スケジュール期間。endTime が startTime より前の場合は 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)
既に指定されたスケジュールとオプションで上書きされたタイムゾーン内の startTime と endTime の間の期間を返します。
このメソッドは、現在のスケジュールオブジェクトの this.endDateTime、 this.seconds、および this.totalSeconds も設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| startTime | GlideDateTime | オプション。使用する開始時間を含む GlideDateTime オブジェクト。 デフォルト:現在の日付と時刻を使用します ( setStartDateTime() を使用して設定)。このパラメーターが渡されない場合は、 |
| endTime | GlideDateTime | オプション。使用する終了時間を含む GlideDateTime オブジェクト。 デフォルト: 現在の日付と時刻を使用します ( setEndDateTime() を使用して設定)。 |
| タイプ | 説明 |
|---|---|
| 番号 | スケジュール期間。endTime が startTime より前の場合は 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プロパティを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| GlideDateTime | 終了 日時。 |
var dc = new DurationCalculator();
dc.calcDuration(52);
gs.print(dc.getEndDateTime());
2012-04-17 20:57:27
DurationCalculator:getSeconds( )
期間中に実行される作業の合計秒数を示す、calcDuration/calcRelativeDuration によって設定されたthis.secondsプロパティを返します。
これは、開始時間と終了時間の間の合計時間ではなく、合計作業時間であり、作業時間の割合を決定するために使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 番号 | 合計作業時間 (秒)。 |
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プロパティは、作業時間と非作業時間の両方を含む、期間の開始時間と終了時間の間の合計秒数を表します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 番号 | 合計秒数。 |
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 オブジェクトの時間値と比較します。
| 名前 | タイプ | 説明 |
|---|---|---|
| dt | GlideDateTime または文字列 | 渡された tm 値と比較する GlideDateTime オブジェクトまたは表示値の日時。表示値の日時を渡すと、メソッドはそれを GlideDateTime オブジェクトに変換します。 |
| TM | 文字列 | GlideDateTime オブジェクトの時間値と比較する時間の値を表示します。同じ日付を前提とします。 形式:HH:mm:ss |
| タイプ | 説明 |
|---|---|
| ブーリアン | 渡された時間値 (tm) が GlideDateTime オブジェクト (dt) の時間より後であるかどうかを示すフラグ。 可能な値:
|
var dc = new DurationCalculator();
gs.print(dc.isAfter("2020-04-10 08:00:00", "09:00:00"));
スクリプト:true
DurationCalculator - setSchedule(文字列 schedId, 文字列 timezone)
期日の計算に使用するスケジュールとタイムゾーンを設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| スケジュール ID | 文字列 | 設定するスケジュールのSys_id。 テーブル:スケジュール [cmn_schedule]。 |
| タイムゾーン | 文字列 | オプション。設定するタイムゾーン。 デフォルト:ユーザーのタイムゾーン。 |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
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)
期間計算の開始日時を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 開始 | 文字列 | 後続の計算のために開始時間を GMT で表示します。 |
| タイプ | 説明 |
|---|---|
| なし |
var dc = new DurationCalculator();
dc.setStartDateTime("2020-04-10 08:00:00")
DurationCalculator:setStartDateTime(GlideDateTime の説明)
期間計算の開始日時を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| description | GlideDateTime | 後続の計算のための GMT での開始時間を含む GlideDateTime オブジェクト。 |
| タイプ | 説明 |
|---|---|
| なし |
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)
期日の計算に使用するタイムゾーンを設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| タイムゾーン | 文字列 | タイムゾーンの値。 |
| タイプ | 説明 |
|---|---|
| なし |
var dc = new DurationCalculator();
dc.setTimeZone("Los Angeles");