渡された 2 番目の引数が null の場合、subtract(GlideDateTime start,GlideDateTime end) メソッドが間違った結果になるSummary2 つの時刻の間の期間を計算するには、さまざまな方法があります。この記事では、subtract(GlideDateTime start,GlideDateTime end) メソッドのみに焦点を当てます。 以下は、subtract(GlideDateTime start,GlideDateTime end) メソッドの使用法です。 var pastDate = new GlideDateTime("2020-04-16 20:00:00");var currDate = new GlideDateTime("2020-04-17 20:30:55");gs.info("pastDate: " + pastDate); ------------ pastDate: 2020-04-16 20:00:00gs.info("currDate: " + currDate); ------------ currDate: 2020-04-17 20:30:55var dur = new GlideDuration();var dur = GlideDateTime.subtract(pastDate,currDate); gs.print(dur.getDisplayValue()); ------------- 1 Day 30 Minutes 上記のスクリプトから、期間の計算では、日と分の値の違いが考慮され、秒が無視されることは明らかです。 日付は GlideDateTime コンストラクターに渡されて pastDate と currDate が作成されるため、結果は正確です。 pastDate と currDate を作成するために GlideDateTime コンストラクターに値が渡されない場合は、値「0」の正しい結果が返されます。 currDate を作成するために GlideDateTime コンストラクターに値が渡されない場合、結果の currDate は UTC タイムゾーンになるため、値を返す subtract メソッドは異なるタイムゾーンのユーザーには正しくありません。したがって、正確な期間を取得するには、減算によって正しい結果が生成されるように、gs.nowDateTime() を引数として GlideDateTime コンストラクターに渡して currDate を作成する必要があります。 currDate 値がフィールドからフェッチされる場合は、上記の問題を回避するために、フィールドが空かどうかを確認する条件を追加する必要があります。フィールドに値がない場合は、if-else を使用して null 値を処理します。null を処理する方法のサンプルを次に示します。このコードは、subtract() メソッドを使用する前にコピーする必要があります。 if(currDate ==""){currDate = new GlideDateTime(gs.nowDateTime()); } Related Links開発者サイトの参考資料をいくつか紹介します。 nowDateTime メソッドの詳細については、ここをクリックしてくださいsubtract メソッドのその他の使用法については、ここをクリックしてください