【UiPath応用】第4回:日付と時刻の魔術~「今日の日付」や「月末」を自動計算~

こんにちは!UiPath メンターです。

RPAの依頼で最も多いのが、こんな指示です。
「作成したファイルは、『売上報告書_20231025.xlsx』という名前で保存してください」

もしロボットに "売上報告書_20231025.xlsx" と文字で教えてしまったら、明日も明後日も「20231025」という名前で作ってしまい、上書き事故が起きます。

ロボットには「『今日の日付』を使って名前を作って」と教える必要があります。
今回は、そんな「時間の計算」と「表示形式(フォーマット)」のテクニックを伝授します。

1. 今の時間をつかまえる:DateTime.Now

UiPath(VB.NET)では、現在の日時を取得するための呪文があります。
それが DateTime.Now です。

試しに [メッセージ ボックス] を置いて、以下のように入力して実行してみてください。

DateTime.Now.ToString

すると、「2023/10/25 14:30:05」のように、現在の日付と時刻が表示されます。
この DateTime.Now は、年・月・日・時・分・秒、すべての情報を持っています。

2. 形を整える:「ToString」の魔法

しかし、ファイル名にするときに「/(スラッシュ)」や「:(コロン)」が入っていると、Windowsのルールでエラーになって保存できません。
そこで、日付の形を整える(フォーマットする)必要があります。

.ToString("型") という書き方をします。

やりたいこと 式の書き方 結果の例
ファイル名用(8桁) DateTime.Now.ToString("yyyyMMdd") 20231025
画面入力用(スラッシュ) DateTime.Now.ToString("yyyy/MM/dd") 2023/10/25
日本語形式 DateTime.Now.ToString("yyyy年MM月dd日") 2023年10月25日

⚠️ 超重要:MMとmmの違い

ここが最大の落とし穴です。
大文字の MM は「月 (Month)」
小文字の mm は「分 (minute)」
を表します。
もし "yyyymmdd" と書くと、「2023年30分25日」というとんでもない日付になってしまいます。必ず月は大文字と覚えましょう!

3. 未来と過去へワープ:AddDays / AddMonths

「明日の日付を入力したい」
「先月のデータを処理したい」
そんな時は、.Add... という呪文を使います。

よく使う計算リスト

  • 明日(1日後):
    DateTime.Now.AddDays(1).ToString("yyyy/MM/dd")
  • 昨日(1日前):
    DateTime.Now.AddDays(-1).ToString("yyyy/MM/dd")
    ※マイナスの数字を入れると過去に戻れます。
  • 来月(1ヶ月後):
    DateTime.Now.AddMonths(1).ToString("yyyy/MM")
  • 去年の同じ日:
    DateTime.Now.AddYears(-1).ToString("yyyy/MM/dd")

これらの式は、[代入 (Assign)] アクティビティを使って変数に入れたり、[文字を入力 (Type Into)] の入力欄に直接書いたりして使います。

4. プロの技:恐怖の「月末」計算

応用編らしい難問です。
「今月の『月末日』を計算してください」と言われたらどうしますか?

30日の月もあれば、31日の月もあり、2月は28日か29日か……。
これをIF条件分岐で作ろうとすると大変です。

プロはこう考えます。
「来月の1日の、前日が月末だ」

月末を求める魔法の式

new DateTime(Now.Year, Now.Month, 1).AddMonths(1).AddDays(-1).ToString("yyyy/MM/dd")

解説:

  1. new DateTime(Now.Year, Now.Month, 1):まず無理やり「今月の1日」を作ります。
  2. .AddMonths(1):それを「来月の1日」に進めます。
  3. .AddDays(-1):そこから「1日戻る」と……あら不思議、今月の最終日になります!

このロジックは、どんなプログラミング言語でも使われる鉄板ネタです。
そのままコピペして使ってください。

今回のまとめ

  • 現在時刻は DateTime.Now で取得する。
  • 表示形式は .ToString("yyyyMMdd") などで整える。
  • AddDays(1)AddMonths(-1) で未来・過去へ移動できる。
  • 月は大文字の MM、分は小文字の mm。これだけは忘れないで!

💡 メンターからのアドバイス:スラッシュを消すには?

Webから取ってきた日付「2023/10/25」を、ファイル名用に「20231025」にしたい。
これは日付の計算ではなく、文字の置換(Replace)という技術を使います。

ということで、次回は応用編 第5回「文字列操作」
「¥マークを消す」「氏名から苗字だけ取る」「特定の文字を置き換える」といった、データをこねくり回す技術を学びます。
これを覚えれば、どんな汚いデータも綺麗に整形できるようになりますよ!

タイトルとURLをコピーしました