UiPath PR

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

記事内に商品プロモーションを含む場合があります

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

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

目次へ進む

 関連記事 【UiPath】Udemyのオンラインコースでワンランク上のロボット作成技術を学ぶ

当ブログ『エフペンITブログ』の運営者

 

日付や時刻の型(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】Udemyのオンラインコースでワンランク上のロボット作成技術を学ぶ

 


 

ラッコくん
ラッコくん
IT未経験からITエンジニア目指すなら、何から始めれば良い?
エフペン
エフペン
もし、エフペンが未経験からITエンジニア目指すなら、プログラミングスクールのディープロの4ヶ月短期集中コースへ入会します。  

\教育訓練給付金対象講座なら受講料最大45万円給付/

ディープロのオンライン個別説明会&相談会の日程を予約する

*オンライン個別説明会&相談会への参加は無料

ディープロ公式サイトの4ヶ月短期集中コースサイト

 関連記事 現役SEエフペンがもしIT未経験からWebエンジニアを目指すならプログラミングスクール【ディープロ】を受講する

エフペン
エフペン
プログラミングだけでなく、要件、設計、開発、テスト、環境構築とプログラミング以外のスキルも丁寧に学べるので、卒業後1人前とみなされて転職活動できるからです。

 

ABOUT ME
エフペン
システム開発,クラウド構築,サービス企画まで幅広い経験を持つITエンジニア。当ブログでは、UiPathや資格取得のノウハウを発信します。profile詳細 / twitter:@fpen17