UiPathで年月日を加工しよう

By | 2018年6月24日

UiPathで年月日を加工しよう

※2018.3よりUiPathがデフォルト日本語のアクティビティ名となりましたので、
この記事では各アクティビティや機能名を日本語名(英語名)というように記載しています。

現在日時の使い方はこちらで紹介しましたが、年月日といえばいろいろな計算が必要なケースも多いです。
例えば10日後の日付、その月の1日、先月末などなど。
今回はそういったよくある使い方をいくつか紹介します。

前提としてこの計算はdatetime型という変数が必要です
現在の年月日表示をするnowはもともとdatetime型なので直接操作が可能ですが、
例えばEXCELから読み込んだ日時の文字列などを操作する場合はそのまま計算できないため、
いったんdatetime型に変換する作業が必要ですので気を付けましょう。

前準備.datetime型への変換

now(現在日付+時刻)がどんな場合も使えるとは限りませんので、
まず特定の文字列を代入アクティビティ(Assign)を使ってdatetime型に変換するという方法をやってみましょう。
最初の代入(Assign)でまず日付になる文字列”2018/10/08″を設定します。
最初は文字列なので例としてString型の変数variable1に設定しました。

次にdatetime型変数のvariable2を作ります。
※画面下の変数(Variables)タブで変数の作成(CreateVariable)を選択することで、新規作成することができます。

作ったままの状態はGenelicValue型もしくはString型になっていますので、datetime型に変更します。
Sting型の場合はStringの部分をクリックするとプルダウンメニューが表示されますので、
「型の参照…(Browse for Types…)」を選びます。

さらにウィンドウが新しく開きますので、datetimeで検索します。

すると検索結果にmscorlibというのが表示され、その中に「DateTime」があるのでそれを選択し、OKを押します。

最初の画面に戻るとVariable TypeがDateTimeに変わります。これで準備完了です。

Assignではこのようにdatetime型に変換します。

datetime.Parse(variable1)

datetime.Parse(変数名)とすることで、
日付・時分秒の形になっているものをdatetime型に変換できます。
当然、関係のない文字列に対してこれを行うとエラーになります。
こうすることにより、以降の日付操作を行うことが可能になります。

以降はAssignの右に書く内容となります。(画像でいうと赤枠の右側です)

例1.1日足す

variable2.adddays(1)

例2.1か月足す

variable2.addmonths(1)

例3.1か月引く

variable2.addmonths(-1)

例4.その月の1日目

datetime.parse(variable2.tostring(“yyyy/MM/01”))

急に複雑になったように見えますが、実はただの遠回りをしています。
せっかくdatetime型にした文字列をまたもとの文字列に戻しています。
その時、上記の要に書くとyyyyMMまではそのまま使うのですが、
日付は何が入っていても01、つまり1日目が入ります。
そして最後にまたdatetime型に戻しています。
※もちろんvariable1の日付部分を01にしておけば不要です。

例5.先月末

上記の例2と4を組み合わせた応用です。その月の1日目からさらに1日を引くと、
先月末になります。このやり方が便利なところは、
月によって変化する最終日を間違いなく取得できるところです。(もちろんうるう年も対応します)
ほとんど4と同じですが、最後にさらに1日引く処理を追加しています。
最後につける理由ですが、adddaysメソッドはdatetime型にしか使えませんので、
datetime.parseでdatetime型に変更した後となります。

datetime.parse(variable2.tostring(“yyyy/MM/01”)).adddays(-1)

上記のような知識はUiPath独自のものではなくMicrosoftの.netとなりますので、
Microsoftのサイトやそのほかのサイトなどを参考にいろいろと利用してみてください。