ふる雨はあとなく晴れて

暇人の雑記・備忘録

【Power Automate】日付書式の指定について

Power Automateでフローを作っているときに

現在日時の月とか日の値を処理に使いたいケースがあると思います

保存するファイル名に付加するとかフォルダの命名に使うとか。

年だけ、月だけ、日だけ、時だけ、分だけ・・・など。

 

そんなときにちょっとつまづいたところがあったので整理

  1. 日本時間の現在日時を取得する(式を使用)
  2. 現在日時の月の値(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 という値をとりたい。

同じように式で日本時間を取得するときにフォーマットを月で取得するように指定

 

下記ページをざっと読むと

カスタム日時形式文字列 | Microsoft Learn

書式として M を渡せば取れそうなので下記の式を指定してみる。

convertFromUtc(utcNow(), 'Tokyo Standard Time', 'M')
 
で実行してみると、なんか違う。

Mだけを指定すると 標準の日時書式指定文字列 | Microsoft Learn にある書式になります。。

じゃ、月の値「12」を取りたいときはどうすれば・・・と思って
カスタム日時形式文字列 | Microsoft Learn をもう一度見てみると下記の記載が。
 

カスタム書式を指定するときに1文字だけで指定すると、標準の書式として処理されるとのこと。なるほど納得。

単一で使用する場合は

指定子の前または後に空白を挿入するか、
または単一のカスタム日時指定子の前にパーセント ("%") 書式指定子を挿入します。

とのこと。

早速式を下記に変更。

convertFromUtc(utcNow(), 'Tokyo Standard Time', '%M')
 
実行してみると

取れました!
 
単一でカスタム日時の書式を指定する場合はご注意ください。