javascriptで月ごとに祭日を表示させたい

このQ&Aのポイント
  • javascriptを使用して月ごとに祭日を表示する方法を教えてください。
  • 神社のホームページに毎月の祭日をjavascriptで表示させたいです。具体的には、月が替わるごとに「今月の祭日は○×日です」と表示させたいです。
  • 旧暦の日付を利用して、新暦の祭日をjavascriptで表示する方法を教えてください。
回答を見る
  • ベストアンサー

javascriptで月ごとに祭日を表示させたい

javascriptは全くの素人で、どう質問して良いかもよく分かりませんが、よろしくお願いします。 神社のホームページを作成中で、TOPページに毎月の祭日をjavascriptで表示させたいのですが、全くわかりません。 祭日は毎月「旧暦の3日」です。月が替わるごとに「今月の祭日は”○×日”です」という風に表示させたいのですが、それが可能ならスクリプトを教えてください。尚、フリーのスクリプトを利用して、現時点の旧暦は下の記述で表示できました。 (DLしたフリーの外部jsファイルを読み込ませています。) <script type="text/javascript" > <!-- var date = new Date(); var kr = new kyureki(date.getJD()); document.write( "きょうは旧暦の" + " " + kr.month + "月" + kr.day + "日" + "( " + kr.rokuyo + " )" + "にあたります。" + "<br />" ); //--> </script> このkr.dayを利用して、新暦の祭日を表示できればと思います。どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ibara994
  • ベストアンサー率75% (9/12)
回答No.1

<script type="text/javascript" ><!-- (function (){ var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() + 1; var end = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; end += (month==2 && year%4==0 && (year%100!=0 || year%400==0)) ? 1 : 0; var list = [], d, kr; for (d=1 ; d<=end ; d++) { kr = new kyureki((new Date(year, month-1, d, 12)).getJD()); if (kr.day==3) { list.push(d + "日"); } } document.write("今月の祭日は”" + list.join("と") + "”です" + "<br />"); })(); //--></script> その月の、1日から月末まで、1日ごとの旧暦を調べる方法でやってみました。 2回ある場合は「今月の祭日は”○日と○日”です」の格好になります。

waka518ran
質問者

お礼

すばらしいご回答ありがとうございます。 確かに祭日が2回の月も存在しますので、この方法なら完璧です。大変助かりました。ありがとうございました。

関連するQ&A

  • JavaScriptでdocument.fileCreatedDate

    JavaScriptでdocument.fileCreatedDateを使おうとして <script type="text/javascript"> <!-- var date = new Date(document.fileCreatedDate); var year = date.getYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hour = date.getHours(); var min = date.getMinutes(); if(year < 2000){year += 1900;} if(month < 10){month = "0" +month;} if(day < 10){day = "0" + day;} if(hour < 10){hour = "0" + hour;} if(min < 10){min = "0" + min;} document.write("作成日:" + year + "年" + month + "月" + day + "日" + hour + "時" + min + "分" + "<BR>"); //--> </script> のようなスクリプトを作ったんですが表示がおかしくなります。 Google chromeでも正常に表示できるようにしたいです。 よろしくおねがいします。

  • javascriptで質問

    javascript初心者です。 日付で自動的に変わるようなメニューが作りたいのですが もっとシンプルに簡潔にできますか? また、開いているページのタブの色を他と変えたいのですができますか? 以下ソース↓ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>スクリプトテスト</title> <style type="text/css"> .menu li{ list-style-type:none; float:left; border:solid 1px #666666; } .menu li a{ padding:5px; background:#eeeeee; display:block; } .menu li a:hover{ background:#ffffff; } </style> <script type="text/javascript"> <!-- var day01 = new Date(); var year01 = day01.getFullYear(); //年 var mon01 = day01.getMonth() + 1; //月 var date01 = day01.getDate(); //日 var day02 = new Date(); day02.setDate( day02.getDate()+1 ); var year02 = day02.getFullYear(); //年 var mon02 = day02.getMonth() + 1; //月 var date02 = day02.getDate(); //日 var day03 = new Date(); day03.setDate( day03.getDate()+2 ); var year03 = day03.getFullYear(); //年 var mon03 = day03.getMonth() + 1; //月 var date03 = day03.getDate(); //日 var day04 = new Date(); day04.setDate( day04.getDate()+3 ); var year04 = day04.getFullYear(); //年 var mon04 = day04.getMonth() + 1; //月 var date04 = day04.getDate(); //日 var day05 = new Date(); day05.setDate( day05.getDate()+4 ); var year05 = day05.getFullYear(); //年 var mon05 = day05.getMonth() + 1; //月 var date05 = day05.getDate(); //日 var day06 = new Date(); day06.setDate( day06.getDate()+5 ); var year06 = day06.getFullYear(); //年 var mon06 = day06.getMonth() + 1; //月 var date06 = day06.getDate(); //日 var day07 = new Date(); day07.setDate( day07.getDate()+6 ); var year07 = day07.getFullYear(); //年 var mon07 = day07.getMonth() + 1; //月 var date07 = day07.getDate(); //日 // --> </script> </head> <body> <ul class="menu"> <script type="text/javascript"> <!-- document.write('<li><a href="'+year01+mon01+date01+'.html">'+mon01+'月'+date01+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year02+mon02+date02+'.html">'+mon02+'月'+date02+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year03+mon03+date03+'.html">'+mon03+'月'+date03+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year04+mon04+date04+'.html">'+mon04+'月'+date04+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year05+mon05+date05+'.html">'+mon05+'月'+date05+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year06+mon06+date06+'.html">'+mon06+'月'+date06+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year07+mon07+date07+'.html">'+mon07+'月'+date07+'日'+'</a></li>'); //--> </script> </ul> </body> </html>

  • javascriptでの時刻表示カスタム

    ホームページを作れと言われた普通のOLです。 htmlとcssは少しだけ触れますが、javascriptは......(T_T) 知人や知り合いの社員共々聞きましたが全滅です..... 本題ですが、javascriptで現在時刻を取得し、それをそれぞれの要素へ反映させたいです。 例えば、 <div class="smample">??月??日??時??分</div>←現在の時刻-3分 <div class="smample">??月??日??時??分</div>←現在の時刻-4分 <div class="smample">??月??日??時??分</div>←現在の時刻 <div class="smample">??月??日??時??分</div>←現在の時刻-15分 <div class="smample">??月??日??時??分</div>←現在の時刻-4分 という具合に表示できれば最高です。 基本的な時刻表示(下記記載のスクリプト)で試行錯誤しましたが、 ??月??日??時5分の場合、-6分とすると「分」の所の表示が0-1となってしまいます。 更に、-4分/-5分といった複数指定もできません。 javascriptにお詳しい方、どうかご教授下さい。 正直凄く困ってます。。。。 <script type="text/javascript"> var get_current_timestamp = function() { var weeks = new Array('日', '月', '火', '水', '木', '金', '土'); var d = new Date(); // 年月日・曜日・時分秒の取得 var month = d.getMonth() + 1; var day = d.getDate(); var week = weeks[ d.getDay() ]; var hour = d.getHours(); var minute = d.getMinutes() - 6; var second = d.getSeconds() + 10; // 1桁を2桁に変換する if (month < 10) {month = "0" + month;} if (day < 10) {day = "0" + day;} if (hour < 10) {hour = "0" + hour;} if (minute < 10) {minute = "0" + minute;} if (second < 10) {second = "0" + second;} // 整形して返却 return d.getFullYear() + "/" + month + "/" + day + "(" + week + ") " + hour + ":" + minute + ":" + second; } // 現在の日付・時刻を表示する document.write(get_current_timestamp()); </script>

  • JavaScriptがマックのサファリでは、正しく動きません。

    11月24日まで、あと何日です。というように日にちを表示させたいのですが、WindowsのIE6なら正しく日付が表示されるのですが、マックのサファリだととんでもない数字が表示されます。 どなたか、どちらでも正しく表示させられる方法を教えてください。お願いいたします。 <script language="javascript"> <!-- var sakiday = new Date("2005/11/24"); var now = new Date(); var tokuteiday = Math.floor((sakiday.getTime()-now.getTime())/(24*60*60*1000)); document.write("<b>"+tokuteiday+"</b>"); //--> </script>

  • 現在の年齢を表示する場合のコードを教えてもらえま

    <html> <head> <title>test</title> </head> <body> <script type="text/javascript"> <!-- var Year1, Month1, Date1; Year1 = 2016; Month1 = 12; Date1 = 1; // 「Date」オブジェクトでは、数値で"月"を設定する場合、「0~11」(ゼロ・スタート)になるので"月"から"1"を引いて、"月"をゼロ・スタートにしています。 var Date0_Obj = new Date( ); var Date1_Obj = new Date(Year1,Month1-1,Date1); // 数字に対応する意味:1000(ミリ秒→秒)、60(秒→分)、60(分→時間)、24(時間→日にち) var TimeDenominator = 1000*60*60*24; var StartElapse = Math.floor(Date0_Obj.getTime( )/TimeDenominator); var EndElapse = Math.floor(Date1_Obj.getTime( )/TimeDenominator); var Elapse = EndElapse-StartElapse; document.writeln('誕生日まで、あと'+Elapse+'日'); --> </script> </body> </html> これで誕生日までの残りの日数は表示できたのですが 現在の年齢を表示する場合のコードを教えてもらえますか? 「現在29歳です。」 と表示したいです。

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

    下記のようなjavascript でカウントダウンをしています。 ですが、指定日を過ぎると、00 表示になってしまいます。 これを指定日の指定時間を過ぎたら、-- という表示に変更し、 また、bodyないのタグにidを使って「指定日を過ぎました。」という 表示を出したいのですが、ご教授ねがいます。 <script language="javascript"> <!-- function countdown(year, month, day, hour, minute) { Today = new Date(); Todays_Year = Today.getFullYear() - 2000; Todays_Month = Today.getMonth() + 1; Todays_Day = Today.getDate(); Todays_Hour = Today.getHours(); Todays_Date = (new Date(Todays_Year, Todays_Month, Todays_Day, Todays_Hour, Today.getMinutes(), Today.getSeconds())).getTime(); Target_Date = (new Date(year, month, day, hour, minute, 00)).getTime(); Time_Left = Math.round((Target_Date - Todays_Date) / 1000); if(Time_Left < 0) Time_Left = 0; days = Math.floor(Time_Left / (60 * 60 * 24)); Time_Left %= (60 * 60 * 24); hours = Math.floor(Time_Left / (60 * 60)); Time_Left %= (60 * 60); minutes = Math.floor(Time_Left / 60); Time_Left %= 60; seconds = Time_Left; cDay = document.getElementById("counter_day"); cHour = document.getElementById("counter_hour"); cMin = document.getElementById("counter_min"); cSec = document.getElementById("counter_sec"); cDay.innerHTML = GetFormated(days); cHour.innerHTML = GetFormated(hours); cMin.innerHTML = GetFormated(minutes); cSec.innerHTML = GetFormated(seconds); //Recursive call, keeps the clock ticking. setTimeout('countdown(' + year + ',' + month + ',' + day + ',' + hour + ',' + minute + ');', 1000); } function GetFormated(i) { if(i<10) { return "0"+i; } return i; } //--> </script> </head> <body> <span id="counter_day"></span> <span id="counter_hour"></span> <span id="counter_min"></span> <span id="counter_sec"></span> <script language="JavaScript"> <!-- countdown('07,11,05,21,00'); //-->

  • 誕生日からの日数を表示するJavaScriptに、カンマを入れる方法を

    誕生日からの日数を表示するJavaScriptに、カンマを入れる方法を教えてください。 JavaScriptの初心者で、申し訳ありません。 誕生日からの日数を表示するJavaScriptと3桁の後にカンマを表示させるJavaScriptは、 それぞれ単独で見つけたのですが、関連のさせ方が分かりません。 誕生日からの日数を表示するJavaScriptは、以下のものです。 days の前後に文字表示をさせています。 この中の days を表示する時に、3桁の後にカンマを表示させたいのですが。 人の生きた日々ですので、万の単位までしか表示しません。 82歳で、30,000日くらいになります。 var tday=new Date(); var bday=new Date(1928,5-1,13); var ac="#ffffff"; var mark=""; var days=Math.ceil((tday.getTime()-bday.getTime())/(24*60*60*1000)); days=(days+"").fontcolor(ac); days=days.bold(); mark=mark.fontcolor(ac); document.write(mark+"いきて来た日々:"+days+"日"+mark); 文字列にカンマを入れる以下のJavaScriptも見つけました。 これと上のJavaScriptを関連させることで、誕生日からの日数にカンマを入れられるで しょうか? もし、できるのであれば、関連のさせかたを教えてください。 以下のものではダメなら、他のJavaScriptで目的を達成できるものを、教えてください。 str= value; for (i=0; i < str.length / 3 ; i++) { str= str.replace ( /^([+-]?\d+) (\d\d\d)/, "$1,$2"); } お願いします。

  • 明日の日にちを表示するときは

    下記のように1日後の日付を常に表示するときは どこを変えればいいのでしょうか? <TD>※明日は<script language="JavaScript"> <!-- // 訪問日表示 now = new Date(); year = now.getYear(); if (year < 2000) year = year + 1900; month = now.getMonth()+1; day = now.getDate(); wk = new Array("日","月","火","水","木","金","土"); document.write("有効期限:"+year+"年"+month+"月"+day+"日"); // --> </script>

  • 「誕生日まであと○日です」

    <html> <head> <title>test</title> </head> <body> <SCRIPT LANGUAGE="javascript" TYPE="text/javascript"> <!-- var weeks = new Array('日','月','火','水','木','金','土'); var now = new Date(); var year = now.getYear(); // 年 var month = now.getMonth() + 1; // 月 var day = now.getDate(); // 日 var week = weeks[ now.getDay() ]; // 曜日 var hour = now.getHours(); // 時 var min = now.getMinutes(); // 分 var sec = now.getSeconds(); // 秒 if(year < 2000) { year += 1900; } // 数値が1桁の場合、頭に0を付けて2桁で表示する指定 if(month < 10) { month = "0" + month; } if(day < 10) { day = "0" + day; } if(hour < 10) { hour = "0" + hour; } if(min < 10) { min = "0" + min; } if(sec < 10) { sec = "0" + sec; } document.write('今日:' + year + '年' + month + '月' + day + '日'); // --> </SCRIPT> </body> </html> これで今日の日付けは表示できたのですが 誕生日が7/31なのですが document.writeで 「誕生日まであと○日です」 と表示するにはどうすれば良いでしょうか?

    • ベストアンサー
    • HTML
  • JavaScriptでイベントまでのカウントを作りたい。

    教えてください。JavaScript初心者です。 JavaScriptでイベントまでのカウントを作りたいのですが、 日にちを画像でだして、指定した日がきたら、画像で差し替えるようにしたいのですが、どうすればいいのでしょうか? ※現在は指定した日がきたら、「おめでとう」の文字がでるようにしてます。 書いたタグは下記になります。 アドバイスをお願いします。 <script language="JavaScript"><!-- var now = new Date(); var point = new Date(2009,8-1,25); var countdown = Math.ceil( ( point.getTime() - now.getTime() ) / (1000*60*60*24) ); if(countdown > 0) { document.write('countdown '); } else { document.write('おめでとう!'); } // --></script>

専門家に質問してみよう