日時アクションを Power Fx 関数で再現する
はじめに
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 |
具体例
それでは具体例を見ていきましょう。以下では変数 WakeUpTime
と BedTime
を対象に差を求めます。
差を時間単位で求める
<日付の減算>
図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