- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-11-2022 12:24 AM
現在、貸与資産オーダーテーブルにある開始日から返却日の2つの日付の差(日数もしくは日時)を求める方法を模索しています。
以下のようなアクションを作成してみましたが、上手くいきません。
(function execute(inputs, outputs) {
var gd = new GlideDate();
var start_date = gd.setValue(inputs.start_date);
var end_date = gd.setValue(inputs.end_date);
outputs.diffDays = end_date - start_date;
})(inputs, outputs);
アクションのスクリプトやその他方法についてご教授いただけますと幸いです。
解決済! 解決策の投稿を見る。

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-17-2022 02:00 AM
お手数を掛けます。入力ミスでした。
「substract」ではなく「subtract」です。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-11-2022 12:53 AM
こんにちは。
var start_date = gd.setValue(inputs.start_date);
var end_date = gd.setValue(inputs.end_date);
とありますが、以下だったりしませんか?
var start_date = gd.getValue(inputs.start_date);
var end_date = gd.getValue(inputs.end_date);
あと、差分の計算結果はミリ秒で出力されるため、必要な値に計算が必要です。
例:日数の場合は計算結果を86400000で割る
想定されるアウトプットのフォーマットはどのようなものか、必要であれば詳細をお聞かせください。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-14-2022 12:54 AM
リプライありがとうございます。
抽出した日付の差は、「条件待ち」アクションの期間の部分で利用するため、
Durationタイプでアウトプットしたいと考えています。
>日数の場合は計算結果を86400000で割る
上記を参考に以下スクリプトを作成し、差分の日数を取得できましたが、
「条件待ち」アクションで利用する際は、日・時間・秒どの単位で抽出すれば良いでしょうか。
(function execute(inputs, outputs) {
var startDateTime = new GlideDateTime(inputs.start_date);
var endDateTime = new GlideDateTime(inputs.end_date);
var dur = new DurationCalculator();
dur.calcScheduleDuration(startDateTime, endDateTime);
var totalSecs = dur.getTotalSeconds();
outputs.duration = totalSecs/86400;
})(inputs, outputs);

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-12-2022 07:22 AM
GlideDate()を利用する場合はGlideDate.subtract()を利用します。
var gd = new GlideDate();
var start_date = gd.setValue(inputs.start_date);
var end_date = gd.setValue(inputs.end_date);
outputs.diffDays = GlideDate.substract(end_date, start_date);
結果は「1日」のように「日」を含む文字列になります。

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-12-2022 07:48 AM
GlideDate()を利用する場合はGlideDate.substract()を利用します。
例:
日付で返す場合:
(function execute(inputs, outputs) {
var gd = new GlideDate();
var start_date = gd.setValue(inputs.start_date);
var end_date = gd.setValue(inputs.end_date);
var duration= GlideDate.substract(end_date, start_date);
outputs.diffDays = duration.getRoundedDayPart();
})(inputs, outputs);
年月日で返す場合:
(function execute(inputs, outputs) {
var gd = new GlideDate();
var start_date = gd.setValue(inputs.start_date);
var end_date = gd.setValue(inputs.end_date);
var duration= GlideDate.substract(end_date, start_date);
var diff = duration.getByFormat('yyyy MM dd').split(' ');
var years = diff[0]-1970; // 年
var months = diff[1]-1; // 月
var days = diff[2]-1; // 日
outputs.diffDays = years + '年 ' + months + '月 ' + days + '日';
})(inputs, outputs);