UiPath Studioの開発で、日付や時間の操作が必要になることは多いです。
この記事では、変数のDateTime型を指定、現在の日時の取得、時間差の計算、月末や月初日の取得、西暦と和暦の変換、Date型のチェック、Date型と文字列型の変換方法をサンプル付きで紹介します。
関連記事 【UiPath】Udemyのオンラインコースでワンランク上のロボット作成技術を学ぶ

システム開発,クラウド構築,サービス企画まで幅広い経験を持つITエンジニア。当ブログでは、UiPathや資格取得のノウハウを発信します。profile詳細 / twitter:@fpen17
日付や時刻の型(DateTime)について
DateTime型とは
文字列の変数はString型、整数の変数はInt型のように、日時の変数はDateTime型を使用します。
DateTime型は、日付と時刻を格納する型です。
DateTime型のメリット
String型(文字列型)と違い、DateTime型は日付の計算や比較を簡単に行えます。
- 対象日付の3日後を計算する
(例:2020年12月30日の3日後 ⇒ 2021年1月2日) - 日付同士の差分を計算する
(例:2020年11月29日と2020年12月3日の差分 ⇒ 4日) - 複数の日付を順番に並べる
(例:2021年1月15日、2020年12月1日、2020年12月20日、を昇順に並び替える ⇒ ①2020年12月1日 ②2020年12月20日 ③2021年1月15日)
実際のコードは、後の章で紹介します。
DateTime型の変数を作成する
DateTime型の変数は、変数パネルの変数の型をDateTimeに変更することで設定できます。
具体的には、以下手順で設定します。
①下段にある[変数]をクリックする
②[変数の作成]をクリックする
③任意の変数名を入力する。
④変数の型をクリックし、[型の参照]をクリック
⑤「datetime」を入力する
⑥mscorlib>Systemの[DateTime]をダブルクリックする
⑦変数の型にDateTimeが設定できました。
【参考】直近で選択した型は、変数の型の一覧に表示されるので、これをクリックします。
日付や時間の取得
現在の日時を取得する(DateTime.Now )
現在の日時の取得は、DateTime.Now を使用します。
現在日時を取得するコード
DateTime.Now
・サンプルワークフロー
・実行結果
現在の日付や時刻を別々に取得する(DateTime.Now、ToString)
現在の日付や時刻を個別に取得するのは、DateTime.Now と ToString を使用します。
現在の年月日を取得するコード
DateTime.Now.ToString("yyyy/MM/dd")
・サンプルワークフロー1
・実行結果1
現在の時間と分と秒を取得するコード
DateTime.Now.ToString("HH:mm:ss")
・サンプルワークフロー2
・実行結果2
・フォーマット例
書式指定子 | 説明 | 出力例(2020年12月6日(日) 13時4分56.7890123秒の場合) |
d | 月に日にち(1~31) | 2020/12/6(日) 13時4分56秒の場合 ⇒12 |
dd | 月に日にち(01~31) | 2020/12/6(日) 13時4分56秒の場合 ⇒12 |
ddd | 曜日の略称名 | 2020/12/6(日) 13時4分56秒の場合 ⇒Sun |
dddd | 曜日の完全名 | 2020/12/6(日) 13時4分56秒の場合 ⇒Sunday |
f | 秒の1/10(コンマ1桁目) | 2020/12/6(日) 13時4分56秒.7890123の場合 ⇒7 |
ff | 秒の1/100(コンマ2桁目) | 2020/12/6(日) 13時4分56秒.7890123の場合 ⇒78 |
fff | 秒の1/1000(コンマ3桁目) | 2020/12/6(日) 13時4分56秒.7890123の場合 ⇒789 |
h | 12時間形式の時間(1~12) | 2020/12/6(日) 13時4分56秒の場合 ⇒1 |
hh | 12時間形式の時間(01~12) | 2020/12/6(日) 13時4分56秒の場合 ⇒01 |
H | 24時間形式の時間(0~23) | 2020/12/6(日) 13時4分56秒の場合 ⇒13 |
HH | 24時間形式の時間(00~23) | 2020/12/6(日) 13時4分56秒の場合 ⇒13 |
m | 分(0~59) | 2020/12/6(日) 13時4分56秒の場合 ⇒4 |
mm | 分(00~59) | 2020/12/6(日) 13時4分56秒の場合 ⇒04 |
M | 月(1~12) | 2020/12/6(日) 13時4分56秒の場合 ⇒12 |
M | 月(01~12) | 2020/12/6(日) 13時4分56秒の場合 ⇒12 |
s | 秒(0~59) | 2020/12/6(日) 13時4分56秒の場合 ⇒56 |
ss | 秒(00~59) | 2020/12/6(日) 13時4分56秒の場合 ⇒56 |
tt | AM/PM 指定子 | 2020/12/6(日) 13時4分56秒の場合 ⇒PM |
yy | 西暦の年の下二けた(00~99) | 2021/1/15(日) 13時4分56秒の場合 ⇒21 |
yyyy | 西暦の年(4桁の数値) | 2021/1/15(日) 13時4分56秒の場合 ⇒2021 |
\ | エスケープ文字 | 2021/1/15(日) 13時4分56秒で、h\hの場合⇒1h |
・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント
//現在日時を「2020年12月6日(日) 13時4分56秒 」とした場合の出力結果。
DateTime.Now.ToString("yyyy/MM/dd") //『2020/12/06』 が出力される
DateTime.Now.ToString("yyyy/M/d") //『2020/12/6』 が出力される
DateTime.Now.ToString("yyyy年MM月dd日") //『2020年12月06日』 が出力される
DateTime.Now.ToString("yyyy年M月d日") //『2020年12月6日』 が出力される
DateTime.Now.ToString("yyyy") //『2020』 が出力される
DateTime.Now.ToString("MM") //『12』 が出力される
DateTime.Now.ToString("dd") //『06』 が出力される
DateTime.Now.ToString("yyyy/MM/dd ddd") //『2020/12/06 Sun』 が出力される
DateTime.Now.ToString("yyyy/MM/dd dddd") //『2020/12/06 Sunday』 が出力される
DateTime.Now.ToString("ddd") //『Sun』 が出力される
DateTime.Now.ToString("dddd") //『Sunday』 が出力される
DateTime.Now.ToString("hh時mm分ss秒") //『01時04分56秒』 が出力される
DateTime.Now.ToString("HH時mm分ss秒") //『13時04分56秒』 が出力される
DateTime.Now.ToString("h時m分s秒") //『1時4分56秒』 が出力される
DateTime.Now.ToString("hh:mm:ss") //『01:04:56』 が出力される
DateTime.Now.ToString("hh") //『01』 が出力される
DateTime.Now.ToString("HH") //『13』 が出力される
DateTime.Now.ToString("mm") //『04』 が出力される
DateTime.Now.ToString("ss") //『56』 が出力される
DateTime.Now.ToString("yyyy年MM月dd日(ddd) HH時mm分ss秒") //『2020年12月06日(Sun) 13時04分56秒』 が出力される
日時の差分を計算
日時の差を取得する(DateDiff)
日時の差を計算するのは、DateDiffを使用します。
date2からdate1を引いた日数差を計算するコード
DateDiff("d",date1,date2)
- ()内の1つ目の値:計算に使用する時間単位
- ()内の2つ目の値:計算に使用する日付
- ()内の3つ目の値:計算に使用する日付
・サンプルワークフロー
・実行結果
・()内の1つ目の値の時間単位の設定
設定 | 説明 |
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 通年での日数 |
d | 日 |
w | 平日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |
・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント
//date1=2018-12-05 、date2=2019-11-08 の場合
DateDiff("yyyy",date1,date2) //『1』 が出力される
DateDiff("yyyy",date2,date1) //『-1』 が出力される
DateDiff("m",date1,date2) //『11』 が出力される
DateDiff("d",date1,date2) //『338』 が出力される
DateDiff("w",date1,date2) //『48』 が出力される
DateDiff("ww",date1,date2) //『48』 が出力される
//date1=2020/12/05 14:34:6 、date2=2020/12/05 16:13:04 の場合
DateDiff("h",date1,date2) //『1』 が出力される
DateDiff("n",date1,date2) //『98』 が出力される
DateDiff("s",date1,date2) //『5938』 が出力される
日時に時間間隔を加える(DateAdd)
日時に指定の時間間隔を加えるのは、DateAddを使用します。
DataTime型 date1に1年を加えるコード
DateAdd("yyyy",1,date1)
- ()内の1つ目の値:計算に使用する時間単位
- ()内の2つ目の値:加える値
- ()内の3つ目の値:元となる日時
・サンプルワークフロー
・実行結果
・()内の1つ目の値の時間単位の設定
設定 | 説明 |
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 通年での日数 |
d | 日 |
w | 平日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |
・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント
//date1=2019/12/05 14:34:6 の場合
DateAdd("yyyy",1,date1) //『12/05/2020 14:34:06』 が出力される
DateAdd("yyyy",-1,date1) //『12/05/2018 14:34:06』 が出力される
DateAdd("q",2,date1) //『06/05/2020 14:34:06』 が出力される
DateAdd("m",3,date1) //『03/05/2020 14:34:06』 が出力される
DateAdd("y",4,date1) //『12/09/2019 14:34:06』 が出力される
DateAdd("d",5,date1) //『12/10/2019 14:34:06』 が出力される
DateAdd("w",10,date1) //『12/15/2019 14:34:06』 が出力される
DateAdd("ww",2,date1) //『12/19/2019 14:34:06』 が出力される
DateAdd("h",11,date1) //『12/06/2019 01:34:06』 が出力される
DateAdd("n",22,date1) //『12/05/2019 14:56:06』 が出力される
DateAdd("s",33,date1) //『12/05/2019 14:34:39』 が出力される
指定日付の月初や月末を取得
指定日の月初の日付を取得(DateTime)
指定日の月初の日付を取得するのは、DateTimeの型を使用します。
Date型 date1の月初を取得するコード
new DateTime(date1.Year,date1.Month,1)
- DateTime()内の1つ目の値:計算対象の年
- DateTime()内の2つ目の値:計算対象の月
- DateTime()内の3つ目の値:1 (月初なので1固定)
・サンプルワークフロー
※2個目のアクティビティは、date2 = new DateTime(date1.Year,date1.Month,1)
・実行結果
指定日の月末の日付を取得(DateTime)
指定日の月末の日付を取得するのは、DateTimeの型を使用します。
DateTime型 date1の月末を取得するコード
new DateTime(date1.Year,date1.Month,1).AddMonths(1).AddDays(-1)
- DateTime()内の1つ目の値:計算対象の年
- DateTime()内の2つ目の値:計算対象の月
- DateTime()内の3つ目の値:1 (月初なので1固定)
・サンプルワークフロー
※2個目のアクティビティは、date2 = new DateTime(date1.Year,date1.Month,1).AddMonths(1).AddDays(-1)
・実行結果
西暦と和暦の変換
西暦から和暦へ変換(CultureInfo、ToString)
西暦から和暦への変換は、CultureInfo型とToStringを使用します。
DateTime型のdate1の和暦を取得するコード
date1 = 2020-12-05
CultureJP = New CultureInfo("ja-JP")
CultureJP.DateTimeFormat.Calendar = New JapaneseCalendar
date1.ToString("ggy年M月d日",CultureJP)
・サンプルコード
※2個目のアクティビティは、
CultureJP = New CultureInfo(“ja-JP”)
※3個目のアクティビティは
CultureJP.DateTimeFormat.Calendar = New JapaneseCalendar
・変数の設定
・実行結果
・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント
date1 = 2020-12-05
CultureJP = New CultureInfo("ja-JP")
CultureJP.DateTimeFormat.Calendar = New JapaneseCalendar
date1.ToString("ggy年M月d日",CultureJP) //『令和2年12月5日』 が出力される
date1.ToString("ggyy年MM月dd日",CultureJP) //『令和02年12月05日』 が出力される
和暦から西暦へ変換(CultureInfo、ToString)
和暦から西暦への変換は、CultureInfo型とToStringを使用します。
String型(文字列型)のstr1の和暦を西暦に変換するコード
str1 = "令和2年12月5日"
date1 = Date.Parse(str1, New CultureInfo("ja-JP"))
date1.Tostring("yyyy年MM月dd日")
・サンプルコード
※2個目のアクティビティは、
date1 = Date.Parse(str1, New CultureInfo(“ja-JP”))
・実行結果
・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント
str1 = "令和2年12月5日"
date1 = Date.Parse(str1, New CultureInfo("ja-JP"))
date1.Tostring("yyyy年MM月dd日") //『2020年12月05日』 が出力される。
str1 = "令2年12月5日"
date1 = Date.Parse(str1, New CultureInfo("ja-JP"))
date1.Tostring("yyyy年MM月dd日") //『2020年12月05日』 が出力される。
str1 = "R2年12月5日"
date1 = Date.Parse(str1, New CultureInfo("ja-JP"))
date1.Tostring("yyyy年MM月dd日") //『2020年12月05日』 が出力される。
str1 = "平成2年12月5日"
date1 = Date.Parse(str1, New CultureInfo("ja-JP"))
date1.Tostring("yyyy年M月d日") //『1990年12月5日』 が出力される。
str1 = "平2年12月5日"
date1 = Date.Parse(str1, New CultureInfo("ja-JP"))
date1.Tostring("yyyy年M月d日") //『1990年12月5日』 が出力される。
str1 = "H2年12月5日"
date1 = Date.Parse(str1, New CultureInfo("ja-JP"))
date1.Tostring("yyyy年M月d日") //『1990年12月5日』 が出力される。
DateTime型のチェック
日付や時刻として認識できるかチェック(IsDate)
文字列を日付や時刻として認識できるかチェックするのは、IsDateを使用します。
String型(文字列型)のstr1が日付または時刻として認識可能かチェックするコード
IsDate(str1)
- ()内の1つ目の値:チェック対象の文字列
・サンプルワークフロー
・実行結果
・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント
IsDate("2019/12/5") //『True』 が出力される
IsDate("2019/20/20") //『False』 が出力される
IsDate("05/12/2020") //『True』 が出力される
IsDate("5/1") //『True』 が出e力される
IsDate("5/99") //『False』 が出力される
IsDate("05.12.19") //『True』 が出力される
IsDate("05.12.2019") //『True』 が出力される
IsDate("December05, 2019") //『True』 が出力される
IsDate("abcde") //『False』 が出力される
IsDate("12345") //『False』 が出力される
IsDate("12:45") //『True』 が出力される
IsDate("12:45:54") //『True』 が出力される
IsDate("12:45:99") //『False』 が出力される
IsDate("2019/12/5 12:45") //『True』 が出力される
IsDate("2019/12/5 12:45:54") //『True』 が出力される
DateTime型とString型の変換
String型の年月日をDateTime型へ変換(DateValue)
年月日文字列をDateTime型へ変換するのは、DateValueを使用します。
日付が代入されたString型(文字列型)のstr1をDateTime型へ変換するコード
str1 = "2020/12/5"
DateValue((str1))
- DateValue()内の1つ目の引数:Date型へ変換する文字列
・サンプルコード
・実行結果
・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント
str1 = "2020/12/5"
DateValue((str1)) // Date型の『12/05/2020 00:00:00』 へ変換される
str1 = "2020/12/05"
DateValue((str1)) // Date型の『12/05/2020 00:00:00』 へ変換される
str1 = "2020年12月5日"
DateValue((str1)) // Date型の『12/05/2020 00:00:00』 へ変換される
str1 = "12/5"
DateValue((str1)) // 実行した年が2020年の場合、Date型の『12/05/2020 00:00:00』 へ変換される
str1 = "2020/99/99"
DateValue((str1)) // 存在しない日付のため、実行エラーになる。
String型の時刻をDateTime型へ変換(TimeValue)
String型の時刻をDateTime型へ変換するのは、TimeValue関数を使用します。
時刻が代入されたString型(文字列型)のstr1をDateTime型へ変換するコード
str1 = "13:04:22"
TimeValue((str1))
- TimeValue()内の1つ目の引数:DateTime型へ変換する時刻の文字列
・サンプルワークフロー
・実行結果
・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント
str1 = "13:04:22"
TimeValue(str1) // DateTime型の『01/01/0001 13:04:22』 へ変換される
str1 = "13時04分22秒"
TimeValue(str1) // DateTime型の『12/05/2020 00:00:00』 へ変換される
str1 = "1:04:22 PM"
TimeValue(str1) // DateTime型の『01/01/0001 13:04:22』 へ変換される
str1 = "13:04"
TimeValue(str1) // DateTime型の『01/01/0001 13:04:00』 へ変換される
str1 = "13"
TimeValue(str1) // 実行エラーになる
String型の日時をDateTime型へ変換(CDate)
String型の日時をDateTime型へ変換するのは、CDate関数を使用します。
日時が代入されたString型のstr1をDateTime型へ変換するコード
str1 = "2020/12/5 13:04:22"
CDate(str1)
- CDate()内の1つ目の引数:DateTime型へ変換する日時の文字列
・サンプルワークフロー
・実行結果
・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント
str1 = "2020/12/5 13:04:22"
CDate(str1) // DateTime型の『12/05/2020 13:04:22』 へ変換される
str1 = "2020年12月5日 13時04分22秒"
CDate(str1) // DateTime型の『12/05/2020 13:04:22』 へ変換される
str1 = "2020/12/5 99:88:77"
CDate(str1) // 存在しない時刻のため、エラーになる。
DataTime型をString型へ変換(ToString)
Data型をString型へ変換するのは、ToString関数を使用します。
DateTime型のdate1変数をString型へ変換するコード
date1 = 2020-12-05
date1.ToString
・サンプルワークフロー
・実行結果
まとめ
- DateTime型を使用することで、日時の簡単に計算できる
- 現在の日時は、DateTime.Nowで取得する
- 日時の計算は、DateDiff、DateAdd、DateTime、ToString関数やCultureInfo型を使用する
- 日時のチェックは、IsDateを使用する
- 日時と文字列の変換は、DateValue、TimeValue、CDateを使用する
関連記事 【UiPath】Udemyのオンラインコースでワンランク上のロボット作成技術を学ぶ
\教育訓練給付金対象講座なら受講料最大45万円給付/
*オンライン個別説明会&相談会への参加は無料
関連記事 現役SEエフペンがもしIT未経験からWebエンジニアを目指すならプログラミングスクール【ディープロ】を受講する
