[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
日記書こうとログインしたはいいが、眠くなってきて何書こうとしたかも忘れてもた…orz
つーワケでネタもないのでScriptメモ。
アレパラに合わせて別館で使っていたカウントダウンのScript。
<SCRIPT language="JavaScript">
<!--
myIvent=new Date(2007, 1, 18); //イベントの日付を取得---(*)
myToday=new Date(); //今日の日付を取得
myYear=myToday.getYear();
myMonth=myToday.getMonth();
myDay=myToday.getDate();
if(myYear<2000) myYear=myYear+1900;
myToday=new Date(myYear, myMonth, myDay);
mySec=myIvent.getTime()-myToday.getTime();
//イベント日から今日を引いた分の秒数
myDays=Math.floor(mySec/(1000*60*60*24));
document.write("あと<B style='color: #80e040'>"+myDays+"</B>日");
//-->
</SCRIPT>
今回は直接HTMLファイルに書きましたが、問題は下線部分。例によって即興で手抜きスクリプト書いてたので、イベント5日前まで下線部分がありませんでした。
このif文は何してるかと言うと、年が2007で取得されているか否かの判断。ブラウザによっては107年になってるものがあるのです。その場合1900足して2007年にしてるわけ。
これを怠ると、107で取得するブラウザでは、2007年○月×日-107年△月□日で計算し―――日数に換算して実に69000以上にもなってしまうのです。
そして、私はそれを知っていながら放置してました…(苦笑
だって、殆どのブラウザは2007かな~って…。
で5日前あたりに年のためNNで見てみたら69000↑って表示されてて…。
つーか秒数計算の時点でオーバーフローってないんだな…JavaScript……。
(*)あと、イベントは2/18でしたが、プログラムでは2007、1、18で引数をとってます。これはプログラム上月のカウントが0から始まるから。
11 | 2024/12 | 01 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |