もう…
タイトル変えたwww
blogのタイトルがどうも自分的にしっくりこず、1週間も経たずして変更w
まぁまだ誰も見てないだろうしOKっしょww
年月日フォーマットによるカウントダウン
某掲示板サイトでちょこちょこ回答する事があるんだけど、そこで件の様な事を実現するには?
といった質問があった。それに対する回答が以下のソース。
検証不足ゆえ、どっかまずってる部分あるかもしれないけど、まぁ良しとしようww
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="content-script-type" content="text/javascript"> <script type="text/javascript"> //月ごとの日数 var days = new Object(); days["1"] = 31; days["2"] = 28; days["3"] = 31; days["4"] = 30; days["5"] = 31; days["6"] = 30; days["7"] = 31; days["8"] = 31; days["9"] = 30; days["10"] = 31; days["11"] = 30; days["12"] = 31; function countdown() { var tgtY = 2009; //★ ※年は西暦 var tgtM = 3; //★ var tgtD = 2 //★ var rmdY = 0; //残り年数 var rmdM = 0; //残り月数 var rmdD = 0; //残り日数 var lastday = 0; //その月の日数 var msg = ""; //表示文字列 //現在日付を取得 var today = new Date(); var yy = today.getFullYear(); //年 var mm = today.getMonth() + 1; //月 var dd = today.getDate(); //日 //残り日数計算 if (dd > tgtD) { tgtM = tgtM - 1; if ((isLeapYear(yy)) && (mm == 2)) { lastday = 29; } else { lastday = days[mm]; } rmdD = (lastday - dd) + tgtD; } else { rmdD = tgtD - dd; } //残り月数計算 if (mm > tgtM) { tgtY = tgtY - 1; rmdM = tgtM - mm + 12; } else { rmdM = tgtM - mm; } //残り年数計算 rmdY = tgtY - yy; msg = tgtY + "年" + tgtM + "月" + tgtD + "日まで、あと"; if (rmdY != 0) msg = msg + rmdY + "年と"; if (rmdM != 0) msg = msg + rmdM + "ヶ月と"; if (rmdD != 0) msg = msg + rmdD + "日です。"; with (document) { open(); write(msg); close(); } } //閏年判定 function isLeapYear(y) { return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0; } </script> <title>年月日でカウントダウンt</title> </head> <body> <div style="text-align: center;"> <script type="text/javascript"> countdown(); </script> </div> </body> </html>
残り日数の考え方は以下の通り。
現在日付の日の部分が目的日付の日の部分よりも
大きい場合、例えば
現在日付が2008/2/3、目的の日が2008/4/2 といった場合、
2/3 〜 2/29 ===> 2月の残り日数 26日
4/1 〜 4/2 ===> 2日
それぞれの日数をあわせて 28日、よって残り年月日は
1ヶ月と28日 ってなります。
嫁からも貰えんかった…(´;ω;`)
そういや、昨日ってバレンタインだったけど、もらえたのは会社での義理チョコ1ヶのみ。
娘はおろか、嫁にすら貰えませんでした。。。orz
これはやはり日頃の行いのせいって事ですかね。。。