DateAdd、DateDiff、および TimeZoneOffset 関数
Function | 適用対象 |
---|---|
DateAdd |
|
DateDiff |
|
TimeZoneOffset |
|
日付/時刻値の差を加算または検索し、ローカル時刻と UTC との間で変換します。
内容
DateAdd 関数は、日付/時刻値に単位数を加算します。 結果は、新しい日付/時刻値です。 負の値を指定して、日付/時刻値から単位数を減算することもできます。
DateDiff 関数は、2 つの日付/時刻値の差を返します。 この結果は、単位の整数です。
どちらの関数も、単位は TimeUnit.Milliseconds、TimeUnit.Seconds、TimeUnit.Minutes、TimeUnit.Hours、TimeUnit.Days、TimeUnit.Months、TimeUnit.Quarters、または TimeUnit.Years にすることができます。 既定では、どちらの関数も単位として TimeUnit.Days を使用します。
TimeZoneOffset 関数はユーザーのローカル時刻と UTC (協定世界時) の間の分数を返します。
TimeZoneOffset と DateAdd を使用して、ユーザーのローカル時刻と UTC (協定世界時) の間で変換できます。 TimeZoneOffset を追加するとローカル時刻が UTC に変換され、それを減算 (負を加算) すると UTC からローカル時刻に変換されます。
詳細については、日付、時刻、および DateTime データの種類 および 日付と時刻の操作 も参照してください。
構文
DateAdd( DateTime, Addition [, Units ] )
- DateTime - 必須。 操作する日付/時刻値。
- Addition - 必須。 DateTime に単位で追加する数値。
- Units - オプション。 追加する 単位 のタイプ: TimeUnit.Milliseconds、TimeUnit.Seconds、TimeUnit.Minutes、TimeUnit.Hours、TimeUnit.Days、TimeUnit.Months、TimeUnit.Quarters、または TimeUnit.Years。 指定しない場合は、TimeUnit.Days が使用されます。
DateDiff( StartDateTime, EndDateTime [, Units ] )
- StartDateTime - 必須。 開始の日付/時刻値。
- EndDateTime - 必須。 終了の日付/時刻値。
- Units - オプション。 減算する 単位 のタイプ: TimeUnit.Milliseconds、TimeUnit.Seconds、TimeUnit.Minutes、TimeUnit.Hours、TimeUnit.Days、TimeUnit.Months、TimeUnit.Quarters、または TimeUnit.Years。 指定しない場合は、TimeUnit.Days が使用されます。
TimeZoneOffset( [ DateTime ] )
- DateTime - オプション。 オフセットを返す日付/時刻値。 既定では、現在の日付/時刻が使用されます。
例
これらすべての例では、現在の日付および時刻を 2013 年 7 月 15 日、午後 1:02 と想定しています。
簡易な DateAdd
計算式 | 内容 | 結果 |
---|---|---|
Text( DateAdd( Now(), 3 ), "dd-mm-yyyy hh:mm" ) |
現在の日付および時刻に 3 日 (既定の単位) を追加します。 | "18-07-2013 13:02" |
Text( DateAdd( Now(), 4, TimeUnit.Hours ), "dd-mm-yyyy hh:mm" ) |
現在の日付および時刻に 4 時間を追加します。 | "15-07-2013 17:02" |
Text( DateAdd( Today(), 1, TimeUnit.Months ), "dd-mm-yyyy hh:mm" ) |
Today は時間のコンポーネントを返さないため、現在の日付に 1 か月を、時間なしで追加します。 | "15-08-2013 00:00" |
Text( DateAdd( Now(), ‑30, TimeUnit.Minutes ), "dd-mm-yyyy hh:mm" ) |
現在の日付と時刻から 30 分を減算します。 | "15-07-2013 12:32" |
簡易な DateDiff
計算式 | 内容 | 結果 |
---|---|---|
DateDiff( Now(), DateValue("1/1/2014") ) | TimeUnit.Days の既定の単位で 2 つの単位の差を返します | 170 |
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Months ) | TimeUnit.Monthsで 2 つの値の差を返します | 6 |
DateDiff( Now(), Today(), TimeUnit.Minutes ) | 現在の日付/時刻と現在の日付のみ (時間なし) の差を分で返します。 Now は Today よりも後であるため、結果は負になります。 | -782 |
小数の結果による日付の違い
関数 DateDiff は、減算される単位の整数のみを返し、精度は指定された単位で指定されます。 より高い精度で差を計算するには、以下の例のように、より小さな単位を使用して、結果を適切に変換します。
式 | 内容 | 結果 |
---|---|---|
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) | 分/秒は無視され、差は 1 時間までの時間に基づいています。 | 1 |
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Minutes )/60 | 差には分が使用され、結果は 60 で除算されて時間の差が得られます。 | 0.5 |
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Seconds )/3600 | 差には分と秒が使用され、結果は 3600 で除算されて時間の差が得られます。 | 0.51 |
UTC に変換する
UTC (協定世界時) に変換するには、指定された時刻の TimeZoneOffset を追加します。
たとえば、現在の日付および時刻が太平洋夏時間 (PDT, UTC-7) の 2013 年 7 月 15 日、午後 1:02 であると仮定します。 UTC で現在の時刻を確認するには、以下を使用します。
- DateAdd( Now(), TimeZoneOffset(), TimeUnit.Minutes )
TimeZoneOffset では現在の時刻が既定に設定されるため、引数を渡す必要はありません。
結果を確認するには、dd-mm-yyyy hh:mm 形式の Text 関数を使用して、15-07-2013 20:02 を返します。
UTC から変換する
UTC から変換するには、指定された時刻の TimeZoneOffset を (負を加算することによって) 減算します。
たとえば、2013 年 7 月 15 日、午後 8:02 という UTC の日付と時刻が、StartTime という名前の変数に格納されていると仮定します。 ユーザーのタイム ゾーンの時間を調整するには、以下を使用します。
- DateAdd( StartTime, −TimeZoneOffset( StartTime ), TimeUnit.Minutes )
オフセットを加算するのではなく減算するには TimeZoneOffset の前に負の符号を付けることに注意してください。
結果を確認するには、dd-mm-yyyy hh:mm の形式で Text 関数を使用すると、太平洋夏時間の場合は 15-07-2013 13:02 になります。