- - PR -
日付の計算について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-08-15 20:55
まるくさん、ありがとうございました。
nn = DateAndTime.DateDiff ではコンパイルエラーが出ましたので、まるくさんは、 「これはVB6のコードなんでは」といわれましたが、私がACCESSでなれひたし んだ nn = DateDiff("m", 着手日 ,伝票月日) + 1 を使いました。正常に動作して います。 関数やモジュールを見つけるコツについては、Googleの「.NET」キーワード 検索ですか。私もこれからはこの検索を愛用します。どうもたいへんありがとう ございました。 | ||||||||||||
|
投稿日時: 2007-08-16 13:06
オーバーロードされてたんですね。見落とし失礼しました。では。 | ||||||||||||
|
投稿日時: 2007-08-16 21:41
25行を短くしてみる。
TimeSpan になると、日数しか出せない。これは、月や年は日数が固定していないから仕方がない。では、「月の日数は30日」と仮定すれば、30で割ることで近似的な月数が計算できる。
だんじりさんのコードを短くしてみる。 よく見ると、AddMonths で加算する数と nn に設定する数が違うだけで、あとは同じである。次に、加算する数と nn に設定する数に何らかの関係がないか調べてみる。すると、「加算する数 == nn」という関係がある。では次に、加算する数の変化に、何らかの関係がないか調べてみる。すると、1ずつ増えていることがわかる。このことから、次のように組み立てることができる。
これを VB.NET のコードに変換すると、次の通り。
| ||||||||||||
|
投稿日時: 2007-08-16 22:52
Jittaさん、いつもお世話になっています。
人間は、うまく動作すればそれが正しいと思いたくなるもので、ご指摘のとおり 近似値の30日で割り算していて、カレンダーを加味して2つの年月日の間隔を 計算していたのでわな以下というご指摘をいただきました。 早速、実証するために素人なりに単純な次のようなツーチーンを思索しました。 Dim ymd00, ymd1a, ymd1b, ymd2a, ymd2b, ymd3a, ymd3b, ymd4a, ymd4b As Date ymd00 = CDate("2007 / 1 / 1") ymd1a = CDate("2007 / 1 / 1") ymd1b = CDate("2007 / 1 / 31") ymd2a = CDate("2007 / 2 / 1") ymd2b = CDate("2007 / 2 / 28") ymd3a = CDate("2007 / 3 / 1") ymd3b = CDate("2007 / 3 / 31") ymd4a = CDate("2007 / 4 / 1") ymd4b = CDate("2007 / 4 / 30") MessageBox.Show("答えは1ヶ月目" & DateDiff("m", ymd00, ymd1a) + 1) MessageBox.Show("答えは1ヶ月目" & DateDiff("m", ymd00, ymd1b) + 1) MessageBox.Show("答えは2ヶ月目" & DateDiff("m", ymd00, ymd2a) + 1) MessageBox.Show("答えは2ヶ月目" & DateDiff("m", ymd00, ymd2b) + 1) MessageBox.Show("答えは3ヶ月目" & DateDiff("m", ymd00, ymd3a) + 1) MessageBox.Show("答えは3ヶ月目" & DateDiff("m", ymd00, ymd3b) + 1) MessageBox.Show("答えは4ヶ月目" & DateDiff("m", ymd00, ymd4a) + 1) MessageBox.Show("答えは4ヶ月目" & DateDiff("m", ymd00, ymd4b) + 1) 実行した結果は、カレンダーを加味されてそれぞれの月数が正しく表示されていまし た。よって日数の単純な割り算でわなく、実際のカレンダーを加味して計算され、 着手日からの月数を算出しているようです。Jittaさんのご指摘があるまで私も 単純に考えておりましたが、大変参考にさせていただきました。 今後ともよろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2007-08-17 22:32
ではないか?ルーチン?試作? ごめん、どうでもいいことだけど、すっごく気になって…。 変換ミスなのかもしれませんが。 #自分も人のこと言えんけど書いたものは一度見直しましょう。 | ||||||||||||
|
投稿日時: 2007-09-02 22:36
よっし〜さん
ありがとうございます。私は昔から誤字脱字が多く、その上、書いた文章を 見直して間違いをチェックすることなく送信してしまいます。少し送信前に みなおすことをするように注意します。よっし〜さん、ありがとうございま した。 |