Power Automateで日付データを色々な表示形式に変換する方法をまとめてみた。
日付のタイムゾーンと書式
まずは、日付や日時を考える際の、表示書式やタイムゾーンについて簡単に説明。
タイムゾーン
日付や日時を考える際に、時差も考慮に入れるときはこのタイムゾーンを使う。
- 協定世界時(UTC):世界の基準となる時刻
- 日本:協定世界時+9時間
- 米国東部:協定世界時-5時間
- 米国太平洋:協定世界時-7時間
- 中央ヨーロッパ:協定世界時+1時間
※サマー時間は考えていません。
現時刻を取得するutcNow関数はUTC時間を返してくるので、日本の現在時刻を知りたいときはこの「タイムゾーンを指定」するか、「utcNow関数に+9時間」して時間を求める。

※おまけ:
UTCって昔地理で習ったグリニッジ天文時(GMT)とイコールかと思っていたけど、ちょっと違うらしい。
昔はGMTとイコールだったんだけど、現在はセシウム原子時計の時刻にうるう秒を換算したのがUTCとのこと
日時の書式
書式は「2021-01-27」とか「27/01/2021 13:45:00」とか、日時や日付をどういう形式で表示したいかを指定するときに使う。
書式には「既に定義してくれている書式」があって、この定義に自分の使いたい書式がない場合はカスタムで定義を作る。
- 短い形式の日付:6/15/2009
- 完全な日付を短い形式:Monday, June 15, 2009 1:45 PM
- 一般の日付を長い形式:6/15/2009 1:45:30 PM
- RFC1123 パターン:Mon, 15 Jun 2009 13:45:30 GMT
- ‘yyyyMMdd’:20090615
- ‘yyyy-MM-dd-HH:mm:ss’:2009-06-15-13:45:30
- ‘yyMMdd(ddd)’:090615(Mon)

日付や日時の書式やタイムゾーンを指定する関数まとめ
それでは今日の本題、日付や日時の書式を変換したり、タイムゾーンを変更する関数の紹介。
協定世界時 (UTC)から指定タイムゾーンへ変換:convertFromUtc
convertFromUtc('timestamp', 'destinationTimeZone', 'format'?)
第1引数の時間をUTC時間として、第2引数のタイムゾーンに変える関数。第3引数の書式は任意で、これを指定してあげれば日付の表示形式を変更できる。
convertFromUtc(utcNow(),'Tokyo Standard Time','G')

あるタイムゾーンから別のタイムゾーンへ変換:convertTimeZone
convertTimeZone('timestamp', 'sourceTimeZone', 'destinationTimeZone', 'format'?)
第1引数の時間を、第2引数のタイムゾーンから第3引数のタイムゾーンに変える関数。第4引数の書式は任意で指定可能。
convertTimeZone('2021-01-27T16:45:00', 'Tokyo Standard Time', 'Hawaiian Standard Time', 'G')

あるタイムゾーンから協定世界時 (UTC)へ変換:convertToUtc
convertToUtc('timestamp', 'sourceTimeZone', 'format'?)
第1引数と第2引数で指定した場所の時間を、UTCへ変換する。第3引数の書式は任意で指定可能。
使い方は今までの関数とほとんど変わらないので、省略。
日時を指定した形式の文字列に変換:formatDateTime
formatDateTime('timestamp', 'format')
第1引数の時間を第2引数の書式に変換。この関数では書式は必須。
formatDateTime(convertFromUtc(utcNow(),'Tokyo Standard Time'), 'yy年MM月dd日のhh時mm分ss秒で曜日はdddd')

指定した日時に時間や日数を足したり引いたり:addToTime, subtractFromTime
addToTime('timestamp', interval, 'timeUnit', 'format'?) subtractFromTime('timestamp', interval, 'timeUnit', 'format'?)
第1引数の時間に第2引数と第3引数で指定した時間を足したり引いたりする。第4引数の書式は任意。
- ‘Second’
- ‘Minute’
- ‘Hour’
- ‘Day’
- ‘Week’
- ‘Month’
- ‘Year’
addToTime(convertFromUtc(utcNow(),'Tokyo Standard Time'),1,'Week','d')
すると結果はこんな感じになる。
ちなみに、addDaysとかaddHoursとかは、addToTime関数の第3引数をなくした感じで、使い方はほぼ一緒。


現在の日時に時間や日数を足したり引いたり:getFutureTime, getPastTime
getFutureTime(interval, timeUnit, format?) getPastTime('timestamp', interval, 'timeUnit', 'format'?)
これは、addToTimeとかsubtractFromTimeで第1引数で指定した日時を省略し、現在の時間に足したり引いたりする関数。
使い方はaddToTimeとかとほとんど変わらないので、使用例は省略。


今回は紹介しなかったけれど、dayOfWeek関数とかもけっこう便利なのでそのうち紹介します。
コメント