日付を指定する際、1日前、1年後等を指定したい

studio

#1

かなり初歩的な話かもしれませんが、質問させてください。

当日の日付や日付をダイアログで指定する等で、
yyyy/MM/dd hhmm を特定するやり方は何となくわかっているつもりですが、
例えば取得した変数値(2018/11/08)の一日前や一年後の日付に置き換える、
といったやり方はあるのでしょうか。
ご存知の方がいらっしゃいましたらご助力いただけますと大変幸甚でございます。

以上、宜しくお願い致します。


#2

初歩というよりは、vb.net の話になりますが、
addYears / addMonths / addDaysというメソッドを使って日付の足し引きをすることになります。

http://www.atmarkit.co.jp/ait/articles/0707/05/news128.html

datetime型の変数xに 2018/11/8 が入っているとするならば、
assign アクティビティを使用して、
(欲しい日付) = x.addDays(-1) で1日前、
(欲しい日付) = x.addYears(1) で1年後を取れます。


#3

yukino様

早急なご回答ありがとうございます。
SEとしての知識が薄いのが原因でしたね申し訳ないです…。
ありがとうございます!
またまた私の書き方が悪いせいだと思うのですが、
Assignアクティビティで『変数X = 変数X.addDays(-1)』とすると、
addDays は String のメンバーではありません。というエラーが表示されてしまいます。
どのように設定すればいいか、もう少しお教えいただけないでしょうか…。

以上、何卒宜しくお願い致します。


#4

変数Xが[String]型で定義されているとそのようなエラーが出ますね。
やや面倒くさい話になるのですが、“2018/11/8” という、UiPathで普通に文字で日付を書くと
日付とは判断せずに、日付の形をした文字だ、としか判断してくれないのですよね。。。

なので、「これは日付だよ」というのを教えてあげないといけなくて。
こんな感じで書いてみてください。

変数x = datetime.parse(変数x).addDays(-1).ToString


#5

yukino様

度々ご回答頂きありがとうございます!
エラーの内容的に恐らく型の問題かなとは思っていましたが、
書き方についてお教え頂きありがとうございます!

2018/11/08という日付に-1した結果が 11/07/2018 と表示されました。
順番は変わっていますが一日前の日付は取れました!
ちなみに、当初フォルダの更新日付の取得等もしていたため、
試しにそちらでも試してみたのですが、どうやらスラッシュが無いとエラーとなってしまうようです。
スラッシュ無だと動作しないのは避けられないようであれば、
間にスラッシュ入れるような処理を事前に挟む必要がありそうですね…。

ご回答くださいまして本当に助かりました!
一先ずのお礼とさせてください。宜しくお願い致します。


#6

試しましたか

yourdateVariable.AddDays(1)

文字列を特定の日付形式に解析するには、これを使用します

    datetime.ParseExact(“01/07/2018”,“dd/MM/yyyy”,System.Globalization.CultureInfo.InvariantCulture)) 

Thanks,
Prankur


#7

Jimmyです。
いつもお世話になっております。
variable<dateTime=System.Convert.ToDateTime(“2018/08/08”)
string⇒<dateTime

variable<dateTime.AddDays(1)
variable<dateTime.AddDays(-1)

variable<dateTime.ToString(“yyyy/MM/dd”)
以上、宜しくお願い致します。