• 締切済み

JavaScriptで年月日表示のカウントダウン・アップについて

こんばんは。 OKWave内をはじめ、色々と調べたりしたのですが、 分からなかった為、質問させて頂きます。 JavaScriptを用いて、年月日を表示させるカウントダウンと カウントアップを作りたいと思っています。 例えば、 123開催は2005年6月6日で、△年×月*日経過しています。 456開催は2007年9月13日で、×月*日経過しています。 789開催は2007年11月5日で、*日経過しています。 @@@開催は2007年11月8日で、○○でした。(例:昨日でした。) ###開催は2007年11月9日、○○です。(例:今日です。) ABC開催は2007年11月10日で、○○です。(例:明日です。) DEF開催は2007年11月20日で、あと*日です。 GHI開催は2008年1月15日で、あと×月*日です。 JKL開催は20009年2月5日で、あと△年×月*日です。 の様な年月日表示ができ、当日を含め一日前後は言葉で表示する。 といった感じでの、カウントダウン及びカウントアップは、 JavaScriptで作る事は可能でしょうか? どの様なJavaScript構文になるのか分からず、 よくあるカウントダウン等のJavaScriptで試行錯誤しているのですが、 JavaScriptの組み方が分からなくなりまして。 何方様か、アドバイスやご指摘等、宜しくお願い致します。

みんなの回答

noname#56851
noname#56851
回答No.4

何箇所か間違ってたので書き換えました。 <script type="text/javascript"> <!-- var today var yy; var mm; var dd; var targetday; var tyy; var tmm; var tdd; /* 今日の情報を取得 */ today=new Date(); yy=today.getFullYear(); mm=today.getMonth(); dd=today.getDate(); /* 目的日の情報を取得 */ targetday=new Date(2008,1,10);/* ←ここが目的の日付 */ tyy=targetday.getFullYear(); tmm=targetday.getMonth(); tdd=targetday.getDate(); /* 目的の日までの年月 */ if(today<=targetday){ var diffyy=tyy-yy; var diffmm=tmm-mm; var diffdd=tdd-dd; var comment1="まで"; var comment2="から"; if(diffdd<0){ diffmm=diffmm-1; } if(diffmm<0){ diffyy=diffyy-1; diffmm=12+diffmm; } } /* 目的の日からの経過年月 */ else{ var diffyy=yy-tyy; var diffmm=mm-tmm; var diffdd=dd-tdd; var comment1="から"; var comment2="まで"; if(diffdd<0){ diffmm=diffmm-1; } if(diffmm<0){ diffyy=diffyy-1; diffmm=12+diffmm; } }; /* 大の月小の月をアレーに読みこませる */ var daisyou=new Array(12); daisyou[0]=31; daisyou[1]=28; daisyou[2]=31; daisyou[3]=30; daisyou[4]=31; daisyou[5]=30; daisyou[6]=31; daisyou[7]=31; daisyou[8]=30; daisyou[9]=31; daisyou[10]=30; daisyou[11]=31; /* 目的の日までの年月以外の日数 */ if(today<=targetday){ /* うるう年の判定 */ var uruudosi; if(tyy%4==0){daisyou[1]=29;}; if(tyy%100==0){daisyou[1]=28;}; if(tyy%400==0){daisyou[1]=29;}; var bmm; if(tmm==0){bmm=11} else{bmm=tmm-1}; if(diffdd<0){ diffdd=daisyou[bmm]-dd+tdd; };} /* 目的の日からの年月以外の日数 */ else{ /* うるう年の判定 */ var uruudosi; if(yy%4==0){daisyou[1]=29;}; if(yy%100==0){daisyou[1]=28;}; if(yy%400==0){daisyou[1]=29;}; var bmm; if(mm==0){bmm=11} else{bmm=mm-1}; if(diffdd<0){ diffdd=daisyou[bmm]-tdd+dd; };} mm=mm+1;/* 月の表示が一ずれているのを補正 */ tmm=tmm+1;/* 月の表示が一ずれているのを補正 */ document.write(tyy+"年"+tmm+"月"+tdd+"日"+comment1); document.write("<br>"); document.write(yy+"年"+mm+"月"+dd+"日"+comment2); document.write("<br>"); document.write(diffyy+"年"+diffmm+"ヶ月と"+diffdd+"日です"); document.write("<br>"); //--> </script>

noname#102073
質問者

お礼

長い間お礼を述べていなく、大変失礼を致しました。 2度も、ご回答をして下さり、当時は有り難く思いました。 大変参考になりました、有り難う御座いました。 お礼が遅くなり、失礼致しました。

noname#56851
noname#56851
回答No.3

<script type="text/javascript"> <!-- var today var yy; var mm; var dd; var targetday; var tyy; var tmm; var tdd; /* 今日の情報を取得 */ today=new Date(); yy=today.getFullYear(); mm=today.getMonth(); dd=today.getDate(); /* 目的日の情報を取得 */ targetday=new Date(1600,9,21);/* ←ここが目的の日付 */ tyy=targetday.getFullYear(); tmm=targetday.getMonth(); tdd=targetday.getDate(); /* 目的の日までの年月 */ if(today<=targetday){ var diffyy=tyy-yy; var diffmm=tmm-mm; var diffdd=tdd-dd; var comment1="まで"; var comment2="から"; if(diffdd<0){ diffmm=diffmm-1; } if(diffmm<0){ diffyy=diffyy-1; diffmm=11-mm+tmm; } } /* 目的の日からの経過年月 */ else{ var diffyy=yy-tyy; var diffmm=mm-tmm; var diffdd=dd-tdd; var comment1="から"; var comment2="まで"; if(diffdd<0){ diffmm=diffmm-1; } if(diffmm<0){ diffyy=diffyy-1; diffmm=11-tmm+mm; } }; /* 大の月小の月をアレーに読みこませる */ var daisyou=new Array(12); daisyou[0]=31; daisyou[1]=28; daisyou[2]=31; daisyou[3]=30; daisyou[4]=31; daisyou[5]=30; daisyou[6]=31; daisyou[7]=31; daisyou[8]=30; daisyou[9]=31; daisyou[10]=30; daisyou[11]=31; /* 目的の日までの年月以外の日数 */ if(today<=targetday){ /* うるう年の判定 */ var uruudosi; if(tyy%4==0){daisyou[1]=29;}; if(tyy%100==0){daisyou[1]=28;}; if(tyy%400==0){daisyou[1]=29;}; var bmm; if(tmm==0){bmm=11} else{bmm=tmm-1}; if(diffdd<0){ diffdd=daisyou[bmm]-dd+tdd; };} /* 目的の日からの年月以外の日数 */ else{ /* うるう年の判定 */ var uruudosi; if(yy%4==0){daisyou[1]=29;}; if(yy%100==0){daisyou[1]=28;}; if(yy%400==0){daisyou[1]=29;}; var bmm; if(mm==0){bmm=11} else{bmm=mm-1}; if(diffdd<0){ diffdd=daisyou[bmm]-tdd+dd; };} mm=mm+1;/* 月の表示が一ずれているのを補正 */ tmm=tmm+1;/* 月の表示が一ずれているのを補正 */ document.write(tyy+"年"+tmm+"月"+tdd+"日"+comment1); document.write("<br>"); document.write(yy+"年"+mm+"月"+dd+"日"+comment2); document.write("<br>"); document.write(diffyy+"年"+diffmm+"ヶ月と"+diffdd+"日です"); document.write("<br>"); //--> </script> この様なものを書いてみました、まだ間違いがあるかもしれません。 一応動くので、targetdayを色々書き換えて試して下さい。 過去でも未来でも動くと思います。

noname#102073
質問者

お礼

暫くと申しますか、長い間お礼を述べていなく、 大変失礼を致しました。 ご回答をして下さり、当時は大変有り難く思いました。 お礼が遅くなり、失礼致しました。

回答No.2

年月日でカウントアップするJavaScriptを配布しているサイトがありますので、ご参考までに。 http://tool.stabucky.com/ http://homepage2.nifty.com/coel/kid/js_ikutu.html ↑こちらは、前日、当日は言葉で表現できるようです。 ただどちらも、カウントダウンでの「あと*日」はあっても、「あと△年×月*日」は無いようですね…

参考URL:
http://tool.stabucky.com/,http://homepage2.nifty.com/coel/kid/js_ikutu.html
noname#102073
質問者

お礼

長い間お礼を述べていなく、大変失礼を致しました。 ご回答をして下さり、当時は大変有り難く思いました。 参考URLまで、本当に有り難う御座いました。 お礼が遅くなり、失礼致しました。

noname#44015
noname#44015
回答No.1

イベントの日付が今日かどうか判別する関数を書いてみました. その他の場合,例えば,イベントが昨日なら年と月は今日と同じで, イベントの日-今日の日=-1となると思います. ご参考までに... <html> <head> <script> var currentDate = new Date(); // 現在の日付情報 var eventDate = new Date(2007, 10, 10); // イベントの日付情報 ※月は0~11で表される function isToday (eventDate) { if ( (currentDate.getFullYear() == eventDate.getFullYear()) && (currentDate.getMonth() == eventDate.getMonth()) && (currentDate.getDate() == eventDate.getDate()) ) { return true; } else { return false; } } if (isToday(eventDate)) { alert(eventDate.toString() + " は本日です."); } else { alert(eventDate.toString() + " は本日ではありません."); } </script> </head> <body> <body> </html>

参考URL:
http://pzxa85.hp.infoseek.co.jp/www/wwwjsdat.htm
noname#102073
質問者

お礼

長い間お礼を述べていなく、大変失礼を致しました。 ご回答をして下さり、当時は有り難く思いました。 参考URLまで有り難う御座いました。 お礼が遅くなり、失礼致しました。

関連するQ&A