こんにちは、毛利 真士です。
この記事は Power Apps における日時に関する操作のまとめです。
Power Apps で ~という日時の処理をしたい! というときにどうぞ
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. まとめ
思ったより日付操作の関数多いですね。
【DX人材を育成する新サービスのご案内】
このたび、ノーコード・ローコード開発に興味のある方に向けて、Power Platformを活用した「クラウドアプリ開発実践講座」をご用意しました!
さっそく、金融機関様などで全社的な研修にご採用をいただいております。
ほぼマウス操作だけでアプリが作れてしまう時代。プログラミング未経験の方でも、社内業務の自動化やデータ可視化ツールの開発をリードできるようになります。
いまならお試し60分無料体験講座を開催中です!ぜひお試しください☆
クラウドアプリ開発実践講座
https://sales.fixer.co.jp/dx-training