• 締切済み

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#102073
noname#102073

みんなの回答

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

  • カウントダウンとカウントアップについて

    JavaScriptで「○○は生後△△日になりました。あと××日で1歳になります。」というようにカウントダウンとカウントアップを設置したいと思っています。 例えば、2003年2月1日生まれの場合は カウントアップは var xxday = new Date(2003, 2-1, 2); カウントダウンは var xday = new Date(2004, 2-1, 1); でいいのでしょうか??

  • Javascriptのカウントダウンについて

    現在、カウントダウンタイマーをJavascriptで書いておりますが、質問させて下さい。 例えば朝7時からカウントダウンを開始し、夕方4時になったら「カウントダウン終了!次回のカウントダウンは○月○日(○曜日)です!」とコメントさせて次回のカウントダウン日時(朝7時)になったら、自動でまたカウントダウンさせたい(夕方4時にカウントダウン終了)のですが、どうすれば出来るのでしょうか?m(_ _)m ちなみに○月○日(○曜日)の部分は基本的に次の日にさせたいのですが、次の日が日曜日や祝日の場合はそれを除いた次の日を表示させたいです。 これはJavaScriptで出来ますか? JavaScriptのコードはここを参考に引用しています。 http://javascript123.seesaa.net/article/102586838.html どなたか教えてください。よろしくお願いいたします。

  • flashのActionScript3.0 で日数のカウントダウン表示

    flashのActionScript3.0 で日数のカウントダウン表示をやりたいのですが、できません。 たくさんのソースや同じような質問を試してみましたがいっこうに解決しません。 只今、flashのActionScript3.0は習いたてで、基本的なことを含め勉強中なのですが、課題の提出も近いので質問させてください。 ・ダイナミックテキストはcountdown_mcというインスタンス名を指定。 ・2010年8月13日を開催日とし、そこからさかのぼった日数をカウントしたい ・ダイナミックテキスト内にカウントダウンされた日数を表示。 ・開催日には(開催中!)という画像を表示したい 以上の事をやりたいと思いさんざんやってみましたが、出口が見えないので参考ソース、助言をいただけたら幸いです。 よろしくお願いいたします。

  • Access2013 年月日迄の経過年月日表示

    Access2013で、備忘録作成の為、[年月日] をテーブルに短いテキスト形式で、 例20001205と初めの4桁を西暦、次の2桁を月、後の2桁を日で入力してあります。 『1952年11月27日』から、この年月日迄の、[経過年月日数] を自動的に表示させるクエリのフィールドへの記入式を教えて下さい。宜しくお願いします。

  • Flashでカウントダウン

    Flashで、日にちと時間をカウントダウンできるようにしたいです。 たとえば、特定の日とその日の時間を決め、現在の時間から、 「開催まであとXX日XX:XX:XX (例:開催まであと07日02:34:03)」 という表示にし、秒単位でドンドン数字をカウントダウンするようにしたいです。 また、贅沢を言えば、その日、その時間になったら、表示を、 「本日開催!」 に変え、さらにそれから特定の時間(例えば24時間)が経過したら、 「すでに終了しました」 に出来れば最高です。 素人ですので、もしよろしければ、アクションスクリプトだけでなく、 フレームやレイヤーについても順に教えて頂ければ、幸いです。 使っているのは、Flash MXで、Windows XPです。

  • javascriptを用いたカウントダウンタイマ-

    javascriptを用いた、カウントダウンタイマーの方法を教えて頂けないでしょうか? 【午前9時からカウント開始】(あと”9時間59分59秒")       ↓ 【午後19時に終了】(あと”0時間00分00秒") ※毎日繰り返し (午後19時から午前9時までの間は、何かコメントを表示させておく。) このようなカウントダウンも出来るものなのでしょうか? 超初心者ですが、独学で勉強したくて色々見てますが…、難しくてなかなか…。 どなたか、お知恵を貸して頂けたら、幸いです。 宜しくお願いします。

  • カウントダウンについて

    JavaScriptでカウントダウン表示をしたいのですが、この質問掲示板並びに、その他色々検索してみましたが例えば「2007年○月△日まであと■日」というように日数の類のものしか見当たりません。私のやりたい事は「2007年●月▲日x時まであと□時間」というように指定日だけでなくx時まで指定できて、しかも「あと□時間」のところを1時間間隔でカウントダウンさせたいのです。JavaScriptに関してはあまり知識はないのですが、ヒントが得られる参考ページなどがあればと思っています。どうぞよろしくお願い致します。

  • Accessで、別のテーブルにある同じフィールドを結合する(至急)

    いつも大変お世話になっております。m(_ _)m 分かりましたら、至急お願いしたいのですが Accessで、別々のテーブル(またはクエリ)に同じ「型番」「数量」というフィールドがあって、それぞれ別々の情報が入っています。 それを、1つに結合することは可能ですか? 例) テーブルA: 型番/数量 ABC/5 DEF/3 テーブルB: GHI/2 JKL/3 この2つのテーブル(A・B)を1つのフィールドに表示したい。 型番/数量 ABC/5 DEF/3 GHI/2 JKL/3 というように。。。 Accessの基本にのっとっていないのかもしれませんが、何とかできたらと思います。できるだけ簡単な方法で・・・ どうぞよろしくお願いします。

  • カウントダウンを何個も表示したいのですが・・・

    こんばんは。 「次の誕生日まであと○日」というカウントダウンを自動で表示したくて 検索してみたところ,JavaScriptで書くことが分かりました。 (JavaScriptの書き方は全く知りません。) とあるHPで,以下のように書けば良いと習い <SCRIPT LANGUAGE="JavaScript"> <!-- var now = new Date(); var xday = new Date(2004, 9-1, 15); count = Math.ceil( (xday.getTime() - now.getTime()) / (24*60*60*1000) ); document.write("<FONT style='font-size : 16px; color : #666666'>"); document.write("次の誕生日まであと "); document.write(count); document.write("日 です</FONT>"); //--> </SCRIPT> このように書いたら,無事できました。 しかし, 「次の誕生日まであと○日」 「○さんの誕生日まであと○日」 というように,改行して2つのカウントダウンを表示したく HTMLしか分からないので<br>を入れてみたのですが カウントダウンが2つとも表示されません。 改行して表示するにはどうしたら良いのでしょうか。 どうか教えてください。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • カウントダウンJavascript

    W杯開幕までのJavascriptが欲しいと思ってウェブ上で発見した スクリプトを拝借してきて少しコメントを変えて私のサイトに置きました。 でも、2,3変更したい点が有るのです。 私は素人ですのでどこをどうしたら良いかも分かりません。 本を借りてきて少しずつ勉強しているのですが、 できるなら早い内に完成させたいと思い みなさんのお知恵を拝借させていただこうと思いました。 やりたいことはこうです。 1.秒数のリアルタイム表示 キックオフまで後何秒!という風にもカウントダウンしてみたいのです。 2.残り時間による表示切り替え 残り一日を切ったら「後何時間」という風に自動的に切り変えることはできないのでしょうか。 同様に分→秒→キックオフ→秒(経過)→分(経過)という風にできたら最高なのですが。 3.画像表示 カウンタの時間を画像で表示してみたいのです。 1から9までの数字を書いた画像を用意しておいて 残り365日なら3.gif,6.gif,5.gifと順に並べたいのです。 一度にたくさん質問してしまい申し訳有りません。 どうかよろしくお願いいたします。

専門家に質問してみよう