Power Automate 日付や日時の書式やタイムゾーンを指定する関数まとめ|日付の表示形式を変換する方法

Power Automateで日付データを色々な表示形式に変換する方法をまとめてみた。

スポンサーリンク

日付のタイムゾーンと書式

まずは、日付や日時を考える際の、表示書式やタイムゾーンについて簡単に説明。

タイムゾーン

日付や日時を考える際に、時差も考慮に入れるときはこのタイムゾーンを使う

協定世界時(UTC)を基準として、国ごとにこんな感じで時間はずれる。

  • 協定世界時(UTC):世界の基準となる時刻
  • 日本:協定世界時+9時間
  • 米国東部:協定世界時-5時間
  • 米国太平洋:協定世界時-7時間
  • 中央ヨーロッパ:協定世界時+1時間

※サマー時間は考えていません。

現時刻を取得するutcNow関数はUTC時間を返してくるので、日本の現在時刻を知りたいときはこの「タイムゾーンを指定」するか、「utcNow関数に+9時間」して時間を求める。

タイムゾーンを指定するときは↓のサイトの値(文字列)で指定する。
Microsoft Time Zone Index Values

※おまけ:
UTCって昔地理で習ったグリニッジ天文時(GMT)とイコールかと思っていたけど、ちょっと違うらしい。
昔はGMTとイコールだったんだけど、現在はセシウム原子時計の時刻にうるう秒を換算したのがUTCとのこと

日時の書式

書式は「2021-01-27」とか「27/01/2021 13:45:00」とか、日時や日付をどういう形式で表示したいかを指定するときに使う。

書式には「既に定義してくれている書式」があって、この定義に自分の使いたい書式がない場合はカスタムで定義を作る。

既に定義してくれている書式を使って「2009-06-15T13:45:30」を変換しすると、以下のようになる。

  • 短い形式の日付: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
カスタムで書式を指定して「2009-06-15T13:45:30」を変換すると、以下のようになる。

  • ‘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')
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引数の書式は任意で指定可能。

使い方は今までの関数とほとんど変わらないので、省略。

日時を指定した形式の文字列に変換: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関数とかもけっこう便利なのでそのうち紹介します。

関連記事

コメント

タイトルとURLをコピーしました