以下のプログラムは土日は無視されますが祝日も平日としてカウントダウンされてしまいます。
土、日、祝日を含まない平日のみをカウントダウンするプログラムを教えていただけますでしょうか?
<html>
<head>
<script language="JavaScript">
<!--
function countdown() {
var kyou = new Date();
var kinen = new Date("Sep 31, 2008 00:00:00");
// 目標日との差のミリ秒(の絶対値)
var tdiff = Math.abs(kinen.getTime() - kyou.getTime());
// 日数
var days = 0;
var mae;
if (kinen.getTime() > kyou.getTime()) {
// 目標日以前なら
mae = true;
// 曜日を取得(日曜が0、月曜が1、...、土曜が6)
var weekday = kyou.getDay();
while (tdiff > 0) {
if (weekday > 0 && weekday < 6) {
++days;
}
weekday = weekday != 6 ? weekday + 1 : 0;
tdiff -= (24 * 60 * 60 * 1000);
}
} else {
// 目標日以降(含む当日)なら
mae = false;
// 曜日を取得(日曜が0、月曜が1、...、土曜が6)
var weekday = kinen.getDay();
// 残りが1日未満になるまで繰り返す
// 元のプログラムがMath.ceilで切り上げを行っているため、
// それにあわせるための処置
while (tdiff > (24 * 60 * 60 * 1000)) {
if (weekday > 0 && weekday < 6) {
++days;
}
weekday = weekday != 6 ? weekday + 1 : 0;
tdiff -= (24 * 60 * 60 * 1000);
}
}
var meate="あ";
with(Math){
var kotoba;
if (mae) {
// 目標日前なら-1日する
--days;
kotoba = meate + "と " + days + "日 です。";
} else {
if (days == 0) {
kotoba = "も" + meate + "です!";
} else {
kotoba = meate + "から" + days + "日が過ぎました。";
}
}
}
document.write(kotoba);
}
//-->
</script>
</head>
<body>
<center><table border=2 bordercolor=00ffff cellpadding=5 cellspacing=0>
<tr bgcolor="#ffffff"><td bgcolor="#ffff80">
<script language="JavaScript">
<!--
countdown();
//-->
</script>
</td></tr>
</table></center>
</body>
</html>
ご教授の方を宜しくお願いします。
No.3ベストアンサー
- 回答日時:
自分にとってこれは難問でした。
はたして正確なのかもわからず、簡単な検証だけしました。(祝日は約10年先まで調べてからカウントしてます)ミスがなければ好いのですが・・・・。
これ以上は無理です!
<html>
<body>
今年の労働は後<span id="a"></span>日あります。;_;
<script>
window.onload=function(){document.getElementById('a').innerHTML=workdayCount(new Date(2008,12-1,31))};//1月が0なので1つ減る
function workdayCount(e_date){
var c=0;
var s=(new Date()).getTime();
var e=e_date.getTime();
var stp=24*60*60*1000;
var y=(new Date()).getFullYear();
var hdy=[];
for(var m=y+10;y<m;y++){
hdy[y*10000+101]='元旦';
hdy[y*10000+[109,108,114,113,112,111,110][dayCount(y+'/01/01')%7]]='成人の日';
hdy[y*10000+211] = '建国記念の日';
hdy[y*10000+((320.8431+0.242194*(y-1980))|0)-(((y-1980)/4)|0)]='春分の日';
hdy[y*10000+429] = '昭和の日';
hdy[y*10000+503] = '憲法記念日';
hdy[y*10000+504] = 'みどりの日';
hdy[y*10000+505] = '子供の日';
hdy[y*10000+[716,715,721,720,719,718,717][dayCount(y+'/07/01')%7]]='海の日';
hdy[y*10000+[916,915,921,920,919,918,917][dayCount(y+'/09/01')%7]]='敬老の日';
hdy[y*10000+((923.2488+0.242194*(y-1980))|0)-(((y-1980)/4)|0)]='秋分の日';
hdy[y*10000+[1009,1008,1014,1013,1012,1011,1010][dayCount(y+'/10/01')%7]]='体育の日';
hdy[y*10000+1103]='文化の日';
hdy[y*10000+1123]='勤労感謝の日';
hdy[y*10000+1223]='天皇誕生日';
for(var i=101;i<1232;i++){
if(hdy[y*10000+i]){
if(dayCount(y+'/'+((i/100)|0)+'/'+i%100)%7==0 && (hdy[y*10000+i+1])!='') {hdy[y*10000+i+1]='振替休日';i+=2;}
}
}
}
while(s<e){
var ss =new Date(s);
var chkdy=ss.getFullYear()*10000+(ss.getMonth()+1)*100+ss.getDate();
if(0<ss.getDay() && ss.getDay()<6 && hdy[chkdy]==undefined) {c++;}
s+=stp;
}
return c;
}
function serial(date_str){
return (dayCount(date_str)-dayCount('1899/12/31')).toFixed(6);
}
function dayCount(date_str){
var dy=date_str.split(/\/|-| |:/);for(var i=0;i<6;i++) dy[i]=dy[i]?dy[i]-0:0;
var tpy=dy[0]-1;
var d=tpy*365+(tpy/400|0)-(tpy/100|0)+(tpy/4|0)+[0,0,31,59,90,120,151,181,212,243,273,304,334][dy[1]]+dy[2]+(((!(dy[0]%4))^(!(dy[0]%100))^(!(dy[0]%400)))&(dy[1]>2));
var t=dy[3]/24+dy[4]/1440+dy[5]/86400;
return (d+t).toFixed(6);
}
</script>
</body>
</html>
No.2
- 回答日時:
祝日一覧データ
function dayCount(date_str){
var dy=date_str.split(/\/|-| |:/);for(var i=0;i<6;i++) dy[i]=dy[i]?dy[i]-0:0;
var tpy=dy[0]-1;
var d=tpy*365+(tpy/400|0)-(tpy/100|0)+(tpy/4|0)+[0,0,31,59,90,120,151,181,212,243,273,304,334][dy[1]]+dy[2]+(((!(dy[0]%4))^(!(dy[0]%100))^(!(dy[0]%400)))&(dy[1]>2));
var t=dy[3]/24+dy[4]/1440+dy[5]/86400;
return (d+t).toFixed(6);
}
var y=(new Date()).getFullYear();y=2007;
var hdy=[];
hdy[101]='元旦';
hdy[[109,108,114,113,112,111,110][dayCount(y+'/01/01')%7]]='成人の日';
hdy[211] = '建国記念の日';
hdy[((320.8431+0.242194*(y-1980))|0)-(((y-1980)/4)|0)]='春分の日';
hdy[429] = '昭和の日';
hdy[503] = '憲法記念日';
hdy[504] = 'みどりの日';
hdy[505] = '子供の日';
hdy[[716,715,721,720,719,718,717][dayCount(y+'/07/01')%7]]='海の日';
hdy[[916,915,921,920,919,918,917][dayCount(y+'/09/01')%7]]='敬老の日';
hdy[((923.2488+0.242194*(y-1980))|0)-(((y-1980)/4)|0)]='秋分の日';
hdy[[1009,1008,1014,1013,1012,1011,1010][dayCount(y+'/10/01')%7]]='体育の日';
hdy[1103]='文化の日';
hdy[1123]='勤労感謝の日';
hdy[1223]='天皇誕生日';
for(var i=101;i<1232;i++){
if(hdy[i]){
if(dayCount(y+'/'+((i/100)|0)+'/'+i%100)%7==0 && !hdy[i+1]) {hdy[i+1]='振替休日';i+=2;}
}
}
for(i=0,v=y+"\n";i<1232;i++){if(hdy[i]!=undefined) v+=i+'='+hdy[i]+'\n';}
alert(v);
No.1
- 回答日時:
Javascriptは祝日に対応していません。
ですから、「祝日一覧リスト」のようなものを作成し、
「現在の日付が祝日一覧リストに存在したら、その日はカウントしない」
という処理を土日判定付近に加えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- Excel(エクセル) 週毎の集計 2 2023/08/04 16:56
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- Excel(エクセル) 出勤簿の土、日、休日に色付けできない 2 2022/08/04 20:10
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで作った時報アプリが動き...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
リンク集をCSVファイルで管理し...
-
特定のclassを表示、非表示にする
-
ジェネレーターの作り方
-
javascriptカウントダウン終了...
-
Ajaxでタイムアウトしてしまう
-
今日からnヶ月後(前)
-
カンマで終わってるのはセミコ...
-
ローカルにあるファイルを検索...
-
引数なしの関数で疑問です
-
テーブルセル内のinput要素のna...
-
翌月を取得するGASが分かりません
-
ボタンを押すことでテキストエ...
-
なぜmatchメソッドがエラーにな...
-
var exports = exports || {}; ...
-
1日1回引けるJavaScriptおみく...
-
JScriptでExcelの全シートにア...
-
スマフォではボタンを表示させ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
ローカルにあるファイルを検索...
-
JavaScriptで文字列の特定文字...
-
ジェネレーターの作り方
-
javascriptでiframeのURL変更は?
-
なぜmatchメソッドがエラーにな...
-
ASP.NET MVCでObjectをjsに渡す
-
gas スプレッドシートがアクテ...
-
Google Apps Script で添付ファ...
-
html javascript リンク先アド...
-
ASP.NETのコントロールの値をJa...
-
javascriptでテーブルに追加し...
-
C言語の質問です HTMLでこのよ...
-
JavaScriptで決まった「時刻」...
-
翌月を取得するGASが分かりません
-
特定のclassを表示、非表示にする
-
どうすれば良いでしょうか?
-
HTMLにWSHを組み込む
おすすめ情報