UiPath

【UiPath】日付や時間の操作をサンプル付きで紹介

UiPath Studioの開発で、日付や時間の操作が必要になることは多いです。

この記事では、変数のDateTime型を指定、現在の日時の取得、時間差の計算、月末や月初日の取得、西暦と和暦の変換、Date型のチェック、Date型と文字列型の変換方法をサンプル付きで紹介します

※目次をタッチ(またはクリック)して、知りたい章へジャンプしてください。

日付や時刻の型(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型とString型を上手に使い分けることで、効率的に開発できるよ

 

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』 が出力される
ペンギンさん
ペンギンさん
DateDiffの()内の3つ目の値より2つ目の値の方が大きい場合、マイナスで出力されます

 

日時に時間間隔を加える(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』 が出力される

 

ラッコくん
ラッコくん
DateDiffの()内の2つ目の値がマイナスの場合、元となる日時からマイナスの時間単位が引かれるよ

 

指定日付の月初や月末を取得

指定日の月初の日付を取得(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固定)
ペンギンさん
ペンギンさん
指定日付の初日に+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行目と3行目で和暦の書式を設定して、3行目は、設定した書式を利用して和暦を取得しているよ

 

・サンプルコード

※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行目でString型の和暦をDateTime型に設定して、3行目で西暦の文字列を出力しています。

 

・サンプルコード

※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日』 が出力される。
ラッコくん
ラッコくん
和暦は、令和、昭和、大正、明治、令、昭、大、明、R、H、S、T、Mが使用できるよ。

 

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型へ変換する文字列

 

・サンプルコード

 

・実行結果

ラッコくん
ラッコくん
時刻は、0で変換されるよ

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント

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型へ変換する時刻の文字列

 

・サンプルワークフロー

・実行結果

ペンギンさん
ペンギンさん
年月日は、現在ではなく1なので注意してください。

 

・その他のサンプルと実行結果
//より左側がコード、『』が出力結果、//より右側がコメント

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】文字列の操作をサンプル付きで紹介UiPathで行う文字列の操作について、結合、追加、取得、削除、置換、判定、分割、変換を、サンプル付きで紹介します。...

https://penrako.com/uipathstring/(別ウインドウ)

 

↓文字列に対して、null,空,空白スペースが含まれているか、指定文字列と一致しているか、チェックする方法を解説した記事です。

【UiPath】文字列のチェックをサンプル付きで紹介UiPath Studioの開発で、文字列のチェックや判定が必要になることは多いです。 この記事では、文字列に対して、null,空...

https://penrako.com/uipathstringcheck/(別ウインドウ)

 

↓UiPath Studioのアクティビティの使い方、開発時のチップスについては、以下記事にまとめています。

【UiPath】プロセス作成方法やアクティビティの使い方のまとめ記事UiPath Studioでのプロセス作成方法やアクティビティの使い方を体系的に学びたい方向けに、UiPath Studioのプロセス作成方法、アクティビティの使い方、開発時のチップスを分かりやすく説明します。...

https://penrako.com/uipathstudiosummary/(別ウインドウ)