- - PR -
数値型の年月の計算
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-12-08 16:47
こんばんは。
初歩的な質問ですいません。 VB2005での数値型の年月の計算方法を 教えて頂けないでしょうか。 例えば、 Dim AA AS INT32 = 200812 '年月の意味です この値から月の部分をマイナス1月して 200811としたいのです。 Dim AA AS INT32 = 200801 の時は 200712です。 このような時、みなさんはどのようにされますか? | ||||
|
投稿日時: 2008-12-08 16:56
CtypeでString型"200801"
Lengthを調べて6桁なら Substringして "2008" & "/" & "01" Date.TryParseして2008/01/01 (以下略 addMonthsして2007/12/01 (以下略 Formatして"200712" CtypeでInteger型200712 ってしてます。 編集内容:ToString→Ctype(特に意味なし) 追記:↓の方が良いですね。ParseExact勉強になりました。 [ メッセージ編集済み 編集者: ぱると 編集日時 2008-12-08 17:07 ] | ||||
|
投稿日時: 2008-12-08 17:04
Int32.Parse(DateTime.ParseExact(AA.ToString(), "yyyyMM", Nothing).AddMonths(-1).ToString("yyyyMM"))
| ||||
|
投稿日時: 2008-12-08 17:13
最初から日付型で扱うようにしますので、まず "このような時" というのがないわけですが、実装せざるを得ないのであれば System.DateTime.TryParseExact メソッドを書式設定して使います。 System.DateTime 型を取得後 AddMonths メソッドを実行し... あとはわかりますね。 TryParseExact メソッドが失敗したら例外でもスローしておきましょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-12-08 17:17
日付型に変換して加減算してから数値に戻すというのが王道でしょうね。
はるか昔、日付型が存在しない言語だかなんだかで、こんなコードを書いたことがありますが、月数の加算と減算で式を変えないといけないとか、月数に指定できる範囲が 1〜12 に限定されているとか、読みにくいとか、悪いことばかりでしたねえ。 | ||||
|
投稿日時: 2008-12-08 19:02
みなさん、あるがとうございました。
AddMonths(-1)は、とても参考になりました。 |
1