本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「Power Appsの日時操作のまとめ」を再編集したものです。
こんにちは、毛利 真士です。
この記事は Power Apps における日時に関する操作のまとめです。
Power Appsで~という日時の処理をしたい! というときにどうぞ。
目次
0.はじめに
1.今日の日付や現在の日時を知りたい
2.ある日時が何年か知りたい、何時か知りたい、何曜日か知りたいなど
3.ある日時が今日かどうかを判定したい / 今日がある日付かを判定したい
4.文字列を日時にしたい
5.日時を文字列にしたい
6.数値を指定して日時を作りたい
7.日時を翌日にしたい、2時間後にしたい、30分前にしたい、など
8.2つの日時の時間差を計算したい
9.2つの日時が同じ日付かどうかを判定したい
10.ある日付の年がうるう年かどうか
11.入力-日付の選択 で選択された日付を得たい
12.まとめ
0.はじめに
この記事では「日付」が年月日、「時刻」が時分秒、「日時」が日付と時刻を合わせたものを表すとします。
公式ドキュメント的にはDate型(日付用)とTime型(時刻用)とDateTime型(日時用)があるということになっていますが、全部DateTime型だと思っておけばいいと思います。
1.今日の日付や現在の日時を知りたい
Now関数、Today関数を使います。
今日の日付を得る(時刻部分は0時0分0秒)
Today()
現在の日時を得る(時刻部分も含む)
Now()
2.ある日時が何年か知りたい、何時か知りたい、何曜日か知りたいなど
Year関数、Month関数、Day関数、Hour関数、Minute関数、Second関数、Weekday関数を使います。
関数 | 意味 | 例 |
---|---|---|
Year | 日時の年を得ます | Year(Now()) |
Month | 日時の月を得ます | Month(Now()) |
Day | 日時の日を得ます | Day(Now()) |
Hour | 日時の時を得ます | Hour(Now()) |
Minute | 日時の分を得ます | Minute(Now()) |
Second | 日時の秒を得ます | Second(Now()) |
Weekday | 日時の曜日を得ます(日曜日: 1, 月曜日: 2, …) | Weekday(Now()) |
3.ある日時が今日かどうかを判定したい/今日がある日付かを判定したい
IsToday関数を使います。
例: 今日が2021年5月27日かどうかを判定
IsToday(Date(2021, 5, 27))
4.文字列を日時にしたい
DateValue関数、TimeValue関数、DateTimeValue関数を使います。
省略可能な第二引数を使うと、指定した地域の書式に対応できます(詳細はリンク先)。
例: 文字列”2021/05/27″から日付への変換
DateValue("2021/05/27")
例: 文字列”10:20:30″から時刻への変換
TimeValue("10:20:30")
例: 文字列”2021/05/27 10:20:30″から日時への変換
DateTimeValue("2021/05/27 10:20:30")
5.日時を文字列にしたい
Text関数を使います。
以下の説明では現在時刻を文字列にする例を示します。現在時刻以外の日付を文字列にしたいときはNow()の部分を変えてください。
日時の日付を”~年~月~日”などの形式の文字列にする
例:“2021年05月03日”(第二引数のyyyyが最低4桁の年に、mmが最低2桁の月に、ddが最低2桁の日に置き換えられます)
Text(Now(), "yyyy年mm月dd日")
例:“2021年5月3日”(第二引数のyyyyが最低4桁の年に、mが最低1桁の月に、dが最低1桁の日に置き換えられます)
Text(Now(), "yyyy年m月d日")
例:“2021-05-03”(第二引数のyyyyが最低4桁の年に、mmが最低2桁の月に、ddが最低2桁の日に置き換えられます)
Text(Now(), "yyyy-mm-dd")
日時の時刻を”~時~分~秒”などの形式の文字列にする
注意: mとmmが月にも分にも使われますが、これらの区別は、h,hhが直前で使われているか、s,ssが直後で使われている場合に分だと認識され、それ以外の場合は月と認識されます。
例:“01時02分03秒”(第二引数のhhが最低2桁の時に、mmが最低2桁の分に、ssが最低2桁の秒に置き換えられます)
Text(Now(), "hh時mm分ss秒")
例:“1時2分3秒”(第二引数のhが最低1桁の時に、mが最低1桁の分に、sが最低1桁の秒に置き換えられます)
Text(Now(), "h時m分s秒")
例:“3分” (分だけほしいとき)
分だけほしい場合は書式指定できないのでMinuteを使います。
Text(Minute(Now()), "#分")
例:“03分” (分だけほしいとき)
Text(Minute(Now()), "#00分")
日時を”~年~月~日 ~時~分~秒”などの形式の文字列にする
例:“2021年05月03日 10時20分30秒”(yyyyなどの意味は上記参照)
Text(Now(), "yyyy年mm月dd日 hh時mm分ss秒")
6.数値を指定して日時を作りたい
Date関数とTime関数を使います。
例:2021年5月27日を表す値を作るとき(日時は0時0分0秒)
Date(2021, 5, 27)
例:10時20分30秒を表す値を作るとき(日付の情報はなし)
Time(10, 20, 30)
例:2021年5月27日10時20分30秒を表す値を作るとき
なぜか関数がないのでテキスト経由で作る
DateTimeValue(Text(Date(2021, 5, 27)) & " " & Text(Time(10, 20, 30)))
7.日時を翌日にしたい、2時間後にしたい、30分前にしたい、など
DateAdd関数を使います。
第三引数で加算・減算の単位を指定できます。省略した場合はDays(日単位)です。
例:翌日にする
DateAdd(Now(), 1, Days)
例:2時間後にする
DateAdd(Now(), 2, Hours)
例:30分前にする
DateAdd(Now(), -30, Minutes)
第三引数で指定する単位の一覧(省略時はDays(日))
第三引数 | 単位 |
---|---|
Years | 年 |
Quarters | 四半期 |
Months | 月 |
Days | 日 |
Hours | 時 |
Minutes | 分 |
Seconds | 秒 |
Milliseconds | ミリ秒 |
8.2つの日時の時間差を計算したい
DateDiff関数を使います。
第一引数の日時にどれだけ足すと第二引数の日時になるか?が得られます。
単位は7.のDateAdd関数と同じです
例:2021年4月1日から2021年5月30日までの日数 = 59日
DateDiff(Date(2021, 4, 1), Date(2021, 5, 30), Days)
例:2022年4月1日から2021年4月1日までの年単位の差分 = -1年
DateDiff(Date(2022, 4, 1), Date(2021, 4, 1), Years)
例:13:00:00から15:30:00までの時間単位(分・秒は無視される)の差分 = 2時間
DateDiff(Time(13, 0, 0), Time(15, 30, 0), Hours)
例:13:00:00から15:30:00までの分単位の差分 = 150分
DateDiff(Time(13, 0, 0), Time(15, 30, 0), Minutes)
例:13:00:00から15:30:00までの分単位の差分(時間) = 2.5時間
DateDiff(Time(13, 0, 0), Time(15, 30, 0), Minutes) / 60
9.2つの日時が同じ日付かどうかを判定したい
datetime1、datetime2は日時を持つ変数などとします。
例:日時datetime1と日時datetime2が同じ日付かどうか
Text(datetime1, "yyyymmdd") = Text(datetime2, "yyyymmdd")
例:datetime1の日付が2021年5月27日かどうか
Text(datetime1, "yyyymmdd") = Text(Date(2021, 5, 27), "yyyymmdd")
10.ある日付の年がうるう年かどうか
datetimeが日時を表す変数だとします。
(Mod(Year(datetime), 4) = 0 && Mod(Year(datetime), 100) <> 0) || Mod(Year(datetime), 400) = 0
11.入力-日付の選択 で選択された日付を得たい
SelectedDateで選択されている日付を得られます。
例:名前がDatePicker1の「日付の選択」で選択されている日付を得る
DatePicker1.SelectedDate
12.まとめ
思ったより日付操作の関数多いですね。
毛利 真士/FIXER
三重県出身の毛利真士です
趣味は競プロ、Rust、サーバ周り、自作言語・コンパイラなどなどです
[転載元]
Power Appsの日時操作のまとめ