Power Automateでフローを作っているときに
現在日時の月とか日の値を処理に使いたいケースがあると思います
保存するファイル名に付加するとかフォルダの命名に使うとか。
年だけ、月だけ、日だけ、時だけ、分だけ・・・など。
そんなときにちょっとつまづいたところがあったので整理
- 日本時間の現在日時を取得する(式を使用)
- 現在日時の月の値(1-12)を取得する
1.日本時間の現在日時を取得する(式を使用)
もともと用意されているアクションを組み合わせて
現在時間を取得してタイムゾーンを変換して・・・という形でも取得できますが
欲しい値を1つのアクションで実行するために式を使ったケースです。
[作成]アクションを例にしていますが、変数の初期化とか変数の設定アクションでも同様です。設定する式は下記。
convertFromUtc(utcNow(),'Tokyo Standard Time','yyyy-MM-dd')
convertFromUtcは世界協定時刻 (UTC) を指定したタイムゾーンに変換する関数です。
引数としては、
1つ目:変換元となる時間。utcNow()で世界協定時刻 (UTC) を渡しています
2つ目:変換するタイムゾーン。今回は日本時間に変換するので'Tokyo Standard Time'
3つ目:フォーマット指定。今回は'yyyy-MM-dd'を指定
下記の通り実行結果で本日の日付が指定した形式で取れました。
2.現在日時の月の値(1-12)を取得する
今日が2022年12月3日なので 12 という値をとりたい。
同じように式で日本時間を取得するときにフォーマットを月で取得するように指定
下記ページをざっと読むと
書式として M を渡せば取れそうなので下記の式を指定してみる。
convertFromUtc(utcNow(), 'Tokyo Standard Time', 'M')
で実行してみると、なんか違う。
Mだけを指定すると 標準の日時書式指定文字列 | Microsoft Learn にある書式になります。。
じゃ、月の値「12」を取りたいときはどうすれば・・・と思って
カスタム日時形式文字列 | Microsoft Learn をもう一度見てみると下記の記載が。
カスタム書式を指定するときに1文字だけで指定すると、標準の書式として処理されるとのこと。なるほど納得。
単一で使用する場合は
指定子の前または後に空白を挿入するか、
または単一のカスタム日時指定子の前にパーセント ("%") 書式指定子を挿入します。
とのこと。
早速式を下記に変更。
convertFromUtc(utcNow(), 'Tokyo Standard Time', '%M')
実行してみると
取れました!
単一でカスタム日時の書式を指定する場合はご注意ください。