DateAdd、DateDiff、および TimeZoneOffset 関数

適用先 : キャンバス アプリ Dataverse 数式列 デスクトップ フロー モデル駆動型アプリ Power Platform CLI

日付/時刻値の差を加算または検索し、ローカル時刻と UTC との間で変換します。

内容

DateAdd 関数は、日付/時刻値に単位数を加算します。 結果は、新しい日付/時刻値です。 負の値を指定して、日付/時刻値から単位数を減算することもできます。

DateDiff 関数は、2 つの日付/時刻値の差を返します。 この結果は、単位の整数です。

どちらの関数も、単位は TimeUnit.MillisecondsTimeUnit.SecondsTimeUnit.MinutesTimeUnit.HoursTimeUnit.DaysTimeUnit.MonthsTimeUnit.Quarters、または TimeUnit.Years にすることができます。 既定では、どちらの関数も単位として TimeUnit.Days を使用します。

TimeZoneOffset 関数はユーザーのローカル時刻と UTC (協定世界時) の間の分数を返します。

TimeZoneOffsetDateAdd を使用して、ユーザーのローカル時刻と UTC (協定世界時) の間で変換できます。 TimeZoneOffset を追加するとローカル時刻が UTC に変換され、それを減算 (負を加算) すると UTC からローカル時刻に変換されます。

詳細については、日付、時刻、および DateTime データの種類 および 日付と時刻の操作 も参照してください。

構文

DateAdd( DateTime, Addition [, Units ] )

  • DateTime - 必須。 操作する日付/時刻値。
  • Addition - 必須。 DateTime単位で追加する数値。
  • Units - オプション。 追加する 単位 のタイプ: TimeUnit.MillisecondsTimeUnit.SecondsTimeUnit.MinutesTimeUnit.HoursTimeUnit.DaysTimeUnit.MonthsTimeUnit.Quarters、または TimeUnit.Years。 指定しない場合は、TimeUnit.Days が使用されます。

DateDiff( StartDateTime, EndDateTime [, Units ] )

  • StartDateTime - 必須。 開始の日付/時刻値。
  • EndDateTime - 必須。 終了の日付/時刻値。
  • Units - オプション。 減算する 単位 のタイプ: TimeUnit.MillisecondsTimeUnit.SecondsTimeUnit.MinutesTimeUnit.HoursTimeUnit.DaysTimeUnit.MonthsTimeUnit.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 ) 現在の日付/時刻と現在の日付のみ (時間なし) の差を分で返します。 NowToday よりも後であるため、結果は負になります。 -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 になります。