- comments
- trackbacks

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 ↑↑↑↑↑↑よければクリックをお願いします↓↓↓↓↓↓
0 comments
0 trackbacks

今回は各月の日数をテーブル化
MonthDay = {0,31,28,31,30,31,30,31,31,30,31,30,31}
普通にテーブル化するとこうなります。

今回はテーブル化の時点でうるう年を考慮してしまおうと思います。

うるう年は,
(1)4年に一度
(2)100で割り切れる年の場合は,うるう年として考慮しない
(3)400で割り切れる年の場合は,(1)に該当する場合でもうるう年として考慮する
なので,今年の年の変数をyとすると,

普通に考えると,if(y % 4 == 0)のとき28日,さらにif(y % 100 == 0)のときは29日,if(y % 400 == 0)のときは28日となるように分岐させていけば求めることができます。
それでも良いのですが,それだと長くなってしまいます。

そこで,別に考えて見たいと思います。
4年に一度の部分を
1 / (y % 4 + 1) 」
とします。

値を入れてみるとわかると思いますが,4で割り切れるときは1になります。
同様に100年と400年ごとの場合も考えていきます。
これらを踏まえると,2月の日数は

2月の日数 = 28 + (1 / (y % 4 + 1)) * (1 - 1 / (y % 100 + 1)) + (1 / (y % 400 + 1))

と求めることができます!

今回の各月の日数テーブルは
MonthDay = {0,31,28 + (1 / (y % 4 + 1)) * (1 - 1 / (y % 100 + 1)) + (1 / (y % 400 + 1)),31,30,31,30,31,31,30,31,30,31};

となります。



スポンサーサイト
 ↑↑↑↑↑↑よければクリックをお願いします↓↓↓↓↓↓

最近の調べた用語【その①】

「日付日時の経過時間差分」アルゴリズム①

comment iconコメント ( -0 )

コメントの投稿






trackback iconトラックバック ( -0 )

Trackback URL:

この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。