2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PowerAutomateに日時型なんてものはない

Posted at

Power Automateでフローを構築するとき、「現在日時」を取得して利用したり、「ExcelのテーブルのXX列から読み取った日付」を読み取って利用したりと、日時データを扱うことはしばしばあります。

Problem

ところで、Power Automateで扱えるデータ型には「日時型」(例:C#のDateTime、JavaのDateやDateTime、JavaScriptのDate)は存在しないようです。これは「問題」というより単なる「事実」かもしれませんが。。。

Solution

では日付データはどのように扱うかというと文字列型(String型)のデータとして扱います。ISO8601で規定されたフォーマットや、その他のフォーマットで日時データが表現されている、単なる文字列です。

例:現在の日時を得るには utcNow() 関数を使いましょう。ただし関数名が示す通りこの関数が返すのは世界標準時です。ISO8601形式でミリ秒精度、タイムゾーン付きの日時文字列が得られます。

utcNow()

例:その値を日本標準時に変換するには convertFromUtc() 関数を使いましょう。

convertFromUtc(utcNow(), 'Tokyo Standard Time')

例:30分後の時刻を知りたい場合は addMinute() 関数を使いましょう。ちなみに30分前の場合は負数を指定します。

addMinute(convertFromUtc(utcNow(), 'Tokyo Standard Time'), 30)

だいたいいつもこんな調子ですが、注意点が2つあります。

  1. アクションによって日時データの解釈の仕方が違うので注意しましょう。
    所定の欄に入力された日時データ(を表す文字列)を世界標準時として解釈するものと、どこかしらの国・地域の標準時として解釈するものとがあります。
  2. 日時データの書式化(フォーマット)はなるべく最後の段階で行いましょう。
    繰り返しになりますが、Power Automateにおいて日時データは単なる特別な書式を持つ文字列データです。ひとたび、Power Automateが標準で使用するフォーマット(ISO8601)以外に変換したら、後続の処理でもその書式を意識した処理をしなくてはなりません。前掲の「例」で convertFromUtc()addMinute() はいずれも第3引数を省略していますが、これができるのはISO8601を使う場合だけです。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?