Power Automateで日付データを色んな形式に変換したいとき、いちいち関数を調べるのがめんどかったのでここにまとめ。
事前情報
日付や日時を考える際の、表示書式やタイムゾーンについて簡単に説明。
知っている方、興味ない方は読み飛ばしてください~
※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)
みたいな感じ。
書式の指定に関して詳しくはマニュアルをご覧ください~
本当は「定義されている書式」に、さらにカルチャー(ja-JPとかen-USとか)を指定できたりするんだけど、指定方法が見つからなかったので省略。
日付や日時の書式やタイムゾーンを指定する関数まとめ
では今日の本題、日付や日時の見た目を変換したり、タイムゾーンを変更する関数の紹介。
協定世界時 (UTC)から指定タイムゾーンへ変換:convertFromUtc
convertFromUtc('timestamp', 'destinationTimeZone', 'format'?)
第1引数の時間をUTC時間として、第2引数のタイムゾーンに変える関数。
第3引数の書式は任意だけれど、これを指定してあげれば日付の表示形式を変更できる。
例えばこんな感じに指定すると。
convertFromUtc(utcNow(),'Tokyo Standard Time','G')
UTCを日本時間に変換できる(UTC+9時間)
あるタイムゾーンから別のタイムゾーンへ変換: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引数の書式は任意。
使い方は今までの関数とほとんど変わらないので、省略w
日時を指定した形式の文字列に変換: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引数の書式は任意。
第2引数はinteger(整数)で指定し、第3引数を下から選ぶ。
- ‘Second’
- ‘Minute’
- ‘Hour’
- ‘Day’
- ‘Week’
- ‘Month’
- ‘Year’
例えば日本の現在時刻に1週間足したいときはこんな感じ。
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関数とかもけっこう便利で面白いのでそのうち紹介します~。
コメント