こんにちは!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")
解説:
new DateTime(Now.Year, Now.Month, 1):まず無理やり「今月の1日」を作ります。.AddMonths(1):それを「来月の1日」に進めます。.AddDays(-1):そこから「1日戻る」と……あら不思議、今月の最終日になります!
このロジックは、どんなプログラミング言語でも使われる鉄板ネタです。
そのままコピペして使ってください。
今回のまとめ
- 現在時刻は
DateTime.Nowで取得する。 - 表示形式は
.ToString("yyyyMMdd")などで整える。 AddDays(1)やAddMonths(-1)で未来・過去へ移動できる。- 月は大文字の MM、分は小文字の mm。これだけは忘れないで!
💡 メンターからのアドバイス:スラッシュを消すには?
Webから取ってきた日付「2023/10/25」を、ファイル名用に「20231025」にしたい。
これは日付の計算ではなく、文字の置換(Replace)という技術を使います。
ということで、次回は応用編 第5回「文字列操作」。
「¥マークを消す」「氏名から苗字だけ取る」「特定の文字を置き換える」といった、データをこねくり回す技術を学びます。
これを覚えれば、どんな汚いデータも綺麗に整形できるようになりますよ!