日付計算について、先月の日付をうまく取得できない

Uipathで日付処理をしたいと考えています。
しかし、分からない点があり・・・
例えば

本日の日付(1月22日)をDatetimeで取得。
その後、前月の日付を取得。

というプログラムを考えているのですが、

①本日の日付を取得 → strNow = Now.ToString(“yyyy/MM/dd”)
②先月の日付を取得 → strDate_onemonthago = datetime.Parse(strNow)
strDate_onemonthago = strDate_onemonthago.addmonths(-1)

このようにしています。
すると、実際に動かすと先月の日付は2019/12/22になってほしいのに
2020/00/22になってしまいます。

どこがいけないのかどなたかご教示お願いできると嬉しいです。

Studio 2018.4.4 - 02/28/2019
Enterprise Edition
Windows インストーラー

Microsoft Windows 10 Enterprise 64 ビット
.NET Framework バージョン 4.7.2 or later
環境下では、できますねぇ。

「実際に動かすと先月の日付は2019/12/22になってほしいのに、2020/00/22になって」
これはどのようにして確認したのでしょう?

ありがとうございます。
uipathを実際に動かして確認しました。

now.AddDays(2).ToString( ‘dd / MM / yyyy’)-> 2日先の日付
now.AddDays(1).ToString( ‘dd / MM / yyyy’)->将来の日付。
now.AddDays(0).ToString( ‘dd / MM / yyyy’)->現在の日付。
now.AddDays(-1).ToString( ‘dd / MM / yyyy’)->前の日付
now.AddDays(-2).ToString( ‘dd / MM / yyyy’)-> 2日前

このロジックを試してください

それはそうですよね。

strDate_onemonthagoを、1 行を書き込み辺りでログ化した際、ToString(“yyyyMMdd”)で確認したって事ですね?

ここを、strDate_onemonthago = Now
とやっても同じ結果ですか?

1 Like

こんにちは

可能性の潰しこみになりますが、月の00が表示されている部分は文字列への出力書式をMMではなくmmとしている可能性が高そうな..一度ご確認いただければと思います。

1 Like

①本日の日付を取得(Assign)

strNow = System.DateTime.Now
dtmToday = strNow.date

②一か月前の日付取得(Assign)
strDate_onemonthago = dtmToday.AddMonths(-1)

これで無事取得できました。
原因は、
本日の日付を取得するときに
strNow = Now.ToString(“yyyy/MM/dd”)
として文字列型で取得してしまうと、1か月前の日付を取得しても
今月が1月ならばそこから1を引くと0になってしまうからです。

そのため、2020/00/22という結果が出ていたという単純なことでした。

色々と考えて下さった方々どうもありがとうございました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.