📅

日時アクションを Power Fx 関数で再現する

2024/12/15に公開

はじめに

Power Fx を有効化したデスクトップフローでは、アクションと同等のことが Power Fx 関数でもできます。
本記事では、日時アクショングループ のアクションと同等のことを Power Fx 関数を用いて行う方法を説明します。


図1: Power Fx が有効

コンテキスト

  • Power Fx を有効化したデスクトップフロー

対象読者(前提知識)

  • Power Fx を有効化していない従来のデスクトップフローを作成できる方

日時アクショングループ

日時アクショングループには 3 つのアクションがあります。


図2: 日時アクショングループには 3 つのアクションがある

それぞれのアクションの機能は次の通りです。

アクション 機能
加算する日時 日時に指定した時間単位で数を加算する
日付の減算 2 つの日時の差を指定した時間単位で求める
現在の日時を取得 現在の日時または日付を取得する

そしてそれぞれのアクションと同等のことを行うためには、次の Power Fx 関数を使用します。

アクション Power Fx 関数 機能
加算する日時 DateAdd 関数 日時に指定した時間単位で数を加算する
日付の減算 DateDiff 関数 2 つの日時の差を指定した時間単位で求める
現在の日時を取得 Now 関数, Today 関数 現在の日時または日付を取得する

以下でそれぞれのアクションと同等のことを行う Power Fx 関数について説明していきます。

加算する日時

「加算する日時」アクションと同等のことを行うには DateAdd 関数を使用します。DateAdd 関数の構文は次の通りです。

DateAdd 関数の構文

DateAdd(Datetime, Addtion, Units)
パラメーター 必須/任意 任意の場合の既定 説明
Datetime 必須 Datetime 加算対象の日時
Addtion 必須 数値 Datetime に加算する数
Units 任意 TimeUnit.Days TimeUnit 加算する数の単位

DateAdd 関数は加算する数の単位を TimeUnit で指定します。指定できる単位は次の表の通りです。

<TimeUnit>

TimeUnit 説明
TimeUnit.Years
TimeUnit.Quarters 四半期
TimeUnit.Months
TimeUnit.Days
TimeUnit.Hours
TimeUnit.Minutes
TimeUnit.Seconds
TimeUnit.Milliseconds ミリ秒

DateAdd 関数と加算する日時アクションのパラメーターの対応関係

次に DateAdd 関数のパラメーターと「加算する日時」アクションのパラメーターの対応関係を見ていきましょう。「加算する日時」アクションには「日時」・「加算」・「時間単位」の 3 つのパラメーターがあります。


図3: 「加算する日時」アクションのパラメーター

DateAdd 関数のパラメーターと「加算する日時」アクションのパラメーターの対応関係は次の表の通りです。

加算する日時 DateAdd
日時 Datetime
加算 Addtion
時間単位 Units

最後に「加算する日時」アクションの「時間単位」と DateAdd 関数の「Units」の対応関係を確認しておきましょう。次の表の通りになります。

時間単位 Unit
なし TimeUnit.Milliseconds
TimeUnit.Seconds
TimeUnit.Minutes
時間 TimeUnit.Hours
TimeUnit.Days
TimeUnit.Months
なし TimeUnit.Quarters
TimeUnit.Years

具体例

それでは具体例を見ていきましょう。以下では変数 CurrentDatetime を対象に計算を行います。

10 日後の日付を求める

<加算する日時>


図4: 「加算する日時」アクションで 10 日後の日付を求める

<DateAdd 関数>

=DateAdd(CurrentDatetime, 10, TimeUnit.Days)

8 時間後の日時を求める

<加算する日時>


図5: 「加算する日時」アクションで 8 時間後の日時を求める

<DateAdd 関数>

=DateAdd(CurrentDatetime, 8, TimeUnit.Hours)

1 年前の日付を求める

<加算する日時>


図6: 「加算する日時」アクションで 1 年前の日付を求める

<DateAdd 関数>

=DateAdd(CurrentDatetime, -1, TimeUnit.Years)

参考文献

日付の減算

「日付の減算」アクションと同等のことを行うには DateDiff 関数を使用します。DateDiff 関数の構文は次の通りです。

DateDiff 関数の構文

DateDiff(StartDatetime, EndDatetime, Units)
パラメーター 必須/任意 任意の場合の既定 説明
StartDatetime 必須 Datetime 開始日時
EndDatetime 必須 Datetime 終了日時
Units 任意 TimeUnit.Days TimeUnit 差の単位

DateDiff 関数は差の単位を TimeUnit で指定します。指定できる単位は次の表の通りです。

<TimeUnit>

TimeUnit 説明
TimeUnit.Years
TimeUnit.Quarters 四半期
TimeUnit.Months
TimeUnit.Days
TimeUnit.Hours
TimeUnit.Minutes
TimeUnit.Seconds
TimeUnit.Milliseconds ミリ秒

DateDiff 関数と日付の減算アクションのパラメーターの対応関係

次に DateDiff 関数のパラメーターと「日付の減算」アクションのパラメーターの対応関係を見ていきましょう。「日付の減算」アクションには「元となる日付」・「日付の減算」・「差異を次の単位で取得」の 3 つのパラメーターがあります。


図7: 「日付の減算」アクションのパラメーター

DateDiff 関数のパラメーターと「日付の減算」アクションのパラメーターの対応関係は次の表の通りです。

日付の減算 DateDiff
元となる日付 StartDatetime
日付の減算 EndDatetime
差異を次の単位で取得 Units

最後に「日付の減算」アクションの「差異を次の単位で取得」と DateDiff 関数の「Units」の対応関係を確認しておきましょう。次の表の通りになります。

差異を次の単位で取得 Units
なし TimeUnit.Milliseconds
TimeUnit.Seconds
TimeUnit.Minutes
時間 TimeUnit.Hours
TimeUnit.Days
なし TimeUnit.Months
なし TimeUnit.Quarters
なし TimeUnit.Years

具体例

それでは具体例を見ていきましょう。以下では変数 WakeUpTimeBedTime を対象に差を求めます。

差を時間単位で求める

<日付の減算>


図8: 「日付の減算」アクションで差を時間単位で求める

<DateDiff 関数>

=DateDiff(WakeUpTime, BedTime, TimeUnit.Hours)

差を分単位で求める

<日付の減算>


図9: 「日付の減算」アクションで差を分単位で求める

<DateDiff 関数>

=DateAdd(WakeUpTime, BedTime, TimeUnit.Minutes)

参考文献

現在の日時を取得

「現在の日時を取得」アクションと同等のことを行うには Now 関数または Today 関数を使用します。Now 関数、 Today 関数の構文は次の通りです。

Now 関数の構文

Now()

Today 関数の構文

Today()

Now 関数、Today 関数と現在の日時を取得アクションのパラメーターの関係

次に Now 関数、Today 関数と「現在の日時を取得」アクションのパラメーターの関係を見ていきましょう。「現在の日時を取得」アクションの主なパラメーターは「取得」・「タイムゾーン」です。


図10: 「現在の日時を取得」アクションの主なパラメーター

Now 関数、 Today 関数はそれぞれ、「現在の日時を取得」アクションのパラメーターを次のように設定した時と同じ値を返します。

取得 タイムゾーン 関数
現在の日時 システムタイムゾーン Now 関数
現在の日付のみ システムタイムゾーン Today 関数

(補足)ローカルタイムゾーン以外のタイムゾーンの日時を取得する

「現在の日時を取得」アクションは、「タイムゾーン」パラメーターを設定すればシステムタイムゾーン以外のタイムゾーンの日時を取得することもできます。しかし、 Now 関数、Today 関数はタイムゾーンを指定するパラメーターがないので、常にローカルタイムの日時を返します。ローカルタイム以外のタイムゾーンの日時を取得したい場合は、 Now 関数、Today 関数と DateAdd 関数を組み合わせます。


図11: タイムゾーンを指定して現在の日時を取得する

例えば、太平洋標準時 (UTC-08:00) の現在の日時を取得することを考えてみましょう。太平洋標準時 (UTC-08:00) は日本標準時 (UTC+09:00) から 17 時間遅れているので、DateAdd 関数の Addtion パラメーターを -17 に設定すると取得することができます。

<太平洋標準時 (UTC-08:00) の現在の日時を取得する>

=DateAdd(Now(), -17, TimeUnit.Hours)

参考文献

Discussion