月末日の扱いについて

解決


ららら  2007-02-28 23:48:57  No: 135556

VB.NET2003です。
今、ある日付を基準に1ヶ月後を算出する処理として
算出日付 = DateAdd(DateInterval.Month, 1, ediRow.Item(日付))
としているのですが、
たとえば、
基準日付が2006/11/30の場合、
算出日付は2006/12/30となってしまいます。
基準日付が月末の場合は、算出日付も1ヵ月後の月末が良いのです。

上記の仕様に変更したいのですが、
どう書けば一番良いでしょうか。初心者ですみません。教えてください。


大吉末吉  2007-02-28 23:54:50  No: 135557

うーん。

「対象日の翌日の、1ヶ月後の前日」とか・・・

2006/11/30なら、翌日は2006/12/01、その1ヵ月後は2007/01/01、
その1日前は2006/12/31となるので・・・

通常の日の場合も、
2006/11/15なら、翌日は2006/11/16、その1ヶ月後は2006/12/16、
その1日前は、2006/11/15で問題ないでしょうし・・・


ららら  2007-03-01 00:09:21  No: 135558

なるほど。使わせていただきます。
ありがとうございます!


大吉末吉  2007-03-01 00:13:49  No: 135559

> その1日前は、2006/11/15で問題ないでしょうし・・・
「2006/12/15」の間違いです。

で、申し訳ありませんが、間違ってました。
単純に、この方法だと、2006/1/30や、2006/3/30で間違った日付になりますね。

#この処理は、月末のときだけにして、
#通常の場合は、普通に1ヶ月加えるだけにしないと駄目そうです。


ららら  2007-03-01 00:36:44  No: 135560

すみません。
確かにそうです。
基準日が月末日かどうか判断する関数は、
VBで用意されていませんでしょうか。


大吉末吉  2007-03-01 00:47:22  No: 135561

> 基準日が月末日かどうか判断する関数
あるかどうかは分かりませんが・・・(パット見、なさそうです)

「+1日して月が変わったかどうか」や「+1日して日が『1日』になった」
等で、一応判断はできると思いますけど・・・


Hongliang  URL  2007-03-01 02:27:14  No: 135562

DateTime.DaysInMonth メソッドで任意の月の日数が取得できますが。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加