この記事は、UiPath Advent Calendar (produced with UiPath Friends) の 2日目の記事です。
はじめに
最近ワークフローのレビューをする機会が増えていて、そのなかで時々、とても気になる実装を見かけることがあります。
それが、「9月15日」という日付をもとに、「0915」といったファイル名用の日付を生成する実装です。
上記の例では、月が1〜9である場合(=1桁である場合)に、あとあとファイル名で使いたいなどの理由で先頭に"0"を付け足しています。このやり方をしている方、意外と多いんではないでしょうか。
実はこれ、もっとシンプルに作ることが出来ます。
DateTime型を使おう
DateTime型を扱うことで、このゼロ付加だけではなく色々なメリットを享受できます。
DateTime型とは?
DateTime型は、特定の日時を扱うための型です。期間ではないので、指定したある1点のみを扱うことが出来ます。ちなみに期間を扱いたいときは別の型(TimeSpan型)があります。
どうやって使うのか
まずは生成
もし予め、年・月・日が数値として取得/指定できるのであればとてもシンプルです。【代入】(Assign)アクティビティを用いて、次のようにすることでDateTime型のデータを生成することが出来ます。
specificDateTime = new DateTime(year, month, day)
year
, month
, day
はInt32型が想定されています。もし文字列データしかないなら、CIntするなりInteger.Parseするなりで変換してあげてください。
これで、日付のデータが作れます。ちなみに時刻も指定したい場合は、
specificDateTime = new DateTime(year, month, day, hour, minute, second)
例によって hour
, minute
, second
はInt32型です。
その他にも、DateTime型のデータを生成する方法はいくつかあるのですが、記事化する余力がないので、いったんおいておきます。
ゼロ付加してみる
さて生成されたDateTime型ですが、これを使ってまずはゼロ付加をしてみましょう。
とはいっても、方法はいたってシンプルです。まずは月に対してゼロ付加をしてみます。
monthWithZero = specificDateTime.ToString("MM")
はい、これで月にゼロ付与が出来ました。
この "MM"
という部分(メソッドの引数部分)を、適宜変えることによって出力される値を変えることが出来ます。
どのような文字列が、どのように置き換えられるか(どのような値として出力されるか)は、 .NET の公式ドキュメントにまとまっています。
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings
DateTime型のメリット
いくつかありますが、ピックアップすると以下のようなポイントがあります。
- あとあと、任意の形に出力しやすい
- 大小の比較が出来る
- 計算(時間の加算・減算)が出来る
まとめ
これまで文字列をコネコネするのに苦労した方もいると思いますが、DateTime型を使うことでワークフローがシンプルにできます。
シンプルなワークフローはメンテナンスもしやすいので、ぜひ実装方法のひとつとして取り入れてみてはいかがでしょうか。