- PR -

数値型の年月の計算

1
投稿者投稿内容
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2008-12-08 16:47
 こんばんは。

初歩的な質問ですいません。

VB2005での数値型の年月の計算方法を
教えて頂けないでしょうか。

例えば、
Dim AA AS INT32 = 200812 '年月の意味です

この値から月の部分をマイナス1月して 200811としたいのです。

Dim AA AS INT32 = 200801 の時は 200712です。

このような時、みなさんはどのようにされますか?







ぱると
会議室デビュー日: 2006/12/21
投稿数: 17
投稿日時: 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 ]
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-08 17:04
Int32.Parse(DateTime.ParseExact(AA.ToString(), "yyyyMM", Nothing).AddMonths(-1).ToString("yyyyMM"))
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-12-08 17:13
引用:

なびさんの書き込み (2008-12-08 16:47) より:

このような時、みなさんはどのようにされますか?


最初から日付型で扱うようにしますので、まず "このような時" というのがないわけですが、実装せざるを得ないのであれば System.DateTime.TryParseExact メソッドを書式設定して使います。 System.DateTime 型を取得後 AddMonths メソッドを実行し... あとはわかりますね。

TryParseExact メソッドが失敗したら例外でもスローしておきましょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2008/02/07
投稿数: 115
投稿日時: 2008-12-08 17:17
日付型に変換して加減算してから数値に戻すというのが王道でしょうね。

コード:
int d = 1;
int AA = 200801;
AA -= d + (AA % 100 <= d?88:0);



はるか昔、日付型が存在しない言語だかなんだかで、こんなコードを書いたことがありますが、月数の加算と減算で式を変えないといけないとか、月数に指定できる範囲が 1〜12 に限定されているとか、読みにくいとか、悪いことばかりでしたねえ。
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2008-12-08 19:02
みなさん、あるがとうございました。

AddMonths(-1)は、とても参考になりました。
1

スキルアップ/キャリアアップ(JOB@IT)