コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

Power Automate で日付を色々な形式で表示する


スポンサードリンク

はじめに

こちらの記事のPower Automate Ver です。

koruneko.hatenablog.com

参考文献

docs.microsoft.com

docs.microsoft.com

docs.microsoft.com

Power Automate での式の書き方

式を入力する箇所で、fx というマークがあるので、そこを選択すると式が入力できるようになります。

日本時間

addHours

よくみかける、 addHours するやり方です。

JST(日本時間)はUTC(世界協定時間)に +9 した時間なので、UTC に +9 時間する方法です。

addHours(utcNow(), 9)

ただしこれだと出力結果が

2021-09-24T19:09:46.4347603Z

となってしまい、この結果を他で利用しようとした際システム的にUTCと判断されてしまいます。(末尾に Z があるため)

なので、日本時間を利用したい場合は以下方法を推奨します。

タイムゾーンを日本に変換する

タイムゾーンを日本に変換する方法です。

convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time')

このときの出力結果は

2021-09-24T19:09:46.5441398

となります。

日本時間を扱いたい場合はこの方法を利用するようにしましょう。

Custom Format

カスタム書式設定を使ってフォーマットを指定するパターンです。

式, 結果を記載していきます。

日付

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'),
    'yyyy/MM/dd'
)

結果

2021/09/24

日付(省略系)

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'yy/M/d'
)

結果

21/9/24

日時(AM/PM 表記)

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'yyyy/MM/dd hh:mm:ss tt'
)

結果

2021/09/24 07:09:46 PM

日時(24時間表記)

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'yyyy/MM/dd HH:mm:ss'
)

結果

2021/09/24 19:09:46

日時(12時間表記)

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'yyyy/MM/dd hh:mm:ss'
)

結果

2021/09/24 07:09:46

このように時間は hh (小文字)だと12時間表記となり、 HH (大文字)だと24時間表記になるので、利用の際は気を付けましょう。

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'MMMM'
)

結果

September

月(省略形)

Sep

結果

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'MMM'
)

曜日

英語表記

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'dddd'
)

結果

Friday

日本語表記

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'dddd',
    'ja-JP'
)

結果

金曜日

曜日(省略形)

英語表記

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'ddd'
)

結果

Fri

日本語表記

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'ddd', 
    'ja-JP'
)

結果

月(数値)

int(
    formatDateTime(
        convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
        'MM'
    )
)

結果

9

日(数値)

int(
    formatDateTime(
        convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
        'dd'
    )
)

結果

24

時間(数値)

int(
    formatDateTime(
        convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'),
        'HH'
    )
)

結果

19

分(数値)

int(
    formatDateTime(
        convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'),
        'mm'
    )
)

結果

9

年号

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'gg'
)

結果

A.D.

Single Format

文字1文字でフォーマットを指定するやりかたです。
このため、前述のCustom Format での書式設定に1文字だけのフォーマット(例えば h だけなど)はエラーもしくは想定と違う結果が得られる可能性があることに注意してください。

短い日付

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'd'
)

結果

9/24/2021

長い日付

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'D'
)

結果

Friday, September 24, 2021

短い日時

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'f'
)

結果

Friday, September 24, 2021 7:09 PM

長い日時

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'F'
)

結果

Friday, September 24, 2021 7:09:46 PM

短い一般の日時

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'g'
)

結果

9/24/2021 7:09 PM

長い一般の日時

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'G'
)

結果

9/24/2021 7:09:47 PM

月日

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'm'
)

結果

September 24

* 大文字 / 小文字区別しません。

ラウンドトリップされた日時

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'o'
)

結果

2021-09-24T19:09:47.1066473

* 大文字 / 小文字区別しません。

RFC1123パターンの日時

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'r'
)

結果

Fri, 24 Sep 2021 19:09:47 GMT

* 大文字 / 小文字区別しません。

並べ替え可能な日時

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    's'
)

結果

2021-09-24T19:09:47

短い時刻

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    't'
)

結果

7:09 PM

長い時刻

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'T'
)

結果

7:09:47 PM

短い世界共通の日時

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'u'
)

結果

2021-09-24 19:09:47Z

長い世界共通の日時

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'U'
)

結果

Friday, September 24, 2021 7:09:47 PM

年日

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'y'
)

結果

September 2021

* 大文字 / 小文字区別しません。


2023/05/10追記

和暦の表示

以下コメントをいただきました。
参考になっているようでよかったです!

いつも助けていただいております。powerautomateで和暦を表示する方法が知りたいです。

さて、和暦の表示方法に関してですが、Power Automateで日付のフォーマットを行うにはformatDateTime関数を用いて日付のフォーマットを行うのですが、この関数による日付フォーマットはISO 8601規格に準拠しています。

en.wikipedia.org

このISO 8601規格は国際規格であり、和暦のタイムフォーマットには対応していません

和暦にタイムフォーマットを行うには"JIS X 0301"に準拠している必要があります。
よって、Power Automateにある関数では和暦に変換することはできません。

行うのであれば自身で変換を行う必要があります。

やり方の一例としては、変換を行いたい日付がどの和暦に相当するか?を判断した後に変換を行う。
という方法があります。

元号 記号 当該元号の日付 対応する西暦日付
明治 明,M M01.01.01 1868-01-25
M45.07.29 1912-07-29
大正 大,T T01.07.30 1912-07-30
T15.12.24 1926-12-24
昭和 昭,S S01.12.25 1926-12-25
S64.01.07 1989-01-07
平成 平,H H01.01.08 1989-01-08
H31.04.30 2019-04-30
令和 令,R R01.05.01 2019-05-01

yyyy-MM-dd

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'yyyy-MM-dd',
    'ja-JP'
)

yyyy

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'yyyy',
    'ja-JP'
)

MM

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'MM',
    'ja-JP'
)

dd

formatDateTime(
    convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 
    'dd',
    'ja-JP'
)

和暦変換

concat(
if(
    and(
        greaterOrEquals(
            int(
                split(
                    dateDifference(
                        '1868-01-25',
                        outputs('yyyy-MM-dd')
                    ),
                    ':'
                )[0]
            ), 
            0
        ),
        lessOrEquals(
            int(
                split(
                    dateDifference(
                        '1912-07-29',
                        outputs('yyyy-MM-dd')
                    ),
                    ':'
                )[0]
            ), 
            0
        )
    ), 
    concat('M', add(int(outputs('yyyy')), -1867)),

if(
    and(
        greaterOrEquals(
            int(
                split(
                    dateDifference(
                        '1912-07-30',
                        outputs('yyyy-MM-dd')
                    ),
                    ':'
                )[0]
            ), 
            0
        ),
        lessOrEquals(
            int(
                split(
                    dateDifference(
                        '1926-12-24',
                        outputs('yyyy-MM-dd')
                    ),
                    ':'
                )[0]
            ), 
            0
        )
    ), 
    concat('T', add(int(outputs('yyyy')), -1911)),

if(
    and(
        greaterOrEquals(
            int(
                split(
                    dateDifference(
                        '1926-12-25',
                        outputs('yyyy-MM-dd')
                    ),
                    ':'
                )[0]
            ), 
            0
        ),
        lessOrEquals(
            int(
                split(
                    dateDifference(
                        '1989-01-07',
                        outputs('yyyy-MM-dd')
                    ),
                    ':'
                )[0]
            ), 
            0
        )
    ), 
    concat('S', add(int(outputs('yyyy')), -1925)),
    
if(
    and(
        greaterOrEquals(
            int(
                split(
                    dateDifference(
                        '1989-01-08',
                        outputs('yyyy-MM-dd')
                    ),
                    ':'
                )[0]
            ), 
            0
        ),
        lessOrEquals(
            int(
                split(
                    dateDifference(
                        '2019-04-30',
                        outputs('yyyy-MM-dd')
                    ),
                    ':'
                )[0]
            ), 
            0
        )
    ), 
    concat('H', add(int(outputs('yyyy')), -1988)),

if(
    greaterOrEquals(
        int(
            split(
                dateDifference(
                    '2019-05-01',
                    outputs('yyyy-MM-dd')
                ),
                ':'
            )[0]
        ), 
        0
    ),
    concat('R', add(int(outputs('yyyy')), -2018)),
    ''
)
)
)
)
),
'-',
outputs('MM'),
'-',
outputs('dd')
)

出力例

R5-05-10

めんどくさいですね。

おわりに

以上Power Automate での日付の取り扱い纏めでした。

日付を利用したい場合の参考になれば幸いです。

これはどうやって表現すればいい?などご質問ありましたらコメント等でお気軽にどうぞー。


スポンサードリンク