質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2739閲覧

出荷日をお知らせ出来る出荷日田中ちゃんのカスタマイズ

oyashiro

総合スコア37

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/10/11 01:51

編集2021/10/11 06:27

通販サイトで下記のように出荷日をお知らせする「出荷日田中ちゃん」というコードがあります。

// JavaScript Document thisDay = new Date(); timeStamp = thisDay.getTime(); myMonth = thisDay.getMonth() + 1; myDate = thisDay.getDate(); myHours = thisDay.getHours(); myDay = thisDay.getDay(); myWeekTbl = new Array( "日","月","火","水","木","金","土" ); function isHoliday (year, month, date, nday) { nofw = Math.floor((date - 1) / 7) + 1; shunbun = Math.floor(20.8431+0.242194*(year-1980)-Math.floor((year-1980)/4)); syubun = Math.floor(23.2488+0.242194*(year-1980)-Math.floor((year-1980)/4)); if (month == 1 && date == 1) { return 1; } // 元旦 if (nday == 0) { return 2; } // 日曜 return 0; } function dispDateW () { return dispDate(1); } function dispDate1W (h) { return dispDate1(h, 1); } function dispDate2W (n, h) { return dispDate2(n, h, 1); } function dispDate (w) { return dateFormat(myMonth,myDate,myDay,w); } function dispDate1 (h, w) { return dispDate2(0, h, w); } function dispDate2 (n, h, w) { var i = 0; while (i <= n) { thisDay.setTime(timeStamp + (1000*60*60*24 * i)); myYear2 = thisDay.getFullYear(); myMonth2 = thisDay.getMonth() + 1; myDate2 = thisDay.getDate(); myDay2 = thisDay.getDay(); if (isHoliday(myYear2,myMonth2,myDate2,myDay2) == 0 && i == 0 && h <= myHours) { n++; } // 翌日扱い if (isHoliday(myYear2,myMonth2,myDate2,myDay2) >= 1){ n++; } // 休日 if (isHoliday(myYear2,myMonth2,myDate2,myDay2) == 1 && myDay2 == 0){ n++; } // 振替休日 i++; } return dateFormat(myMonth2,myDate2,myDay2,w); } function dateFormat (month, date, week, w) { if (w == 1) { return month+"月"+date+"日("+myWeekTbl[week]+")"; } else { return month+"月"+date+"日"; } } // --> </SCRIPT> <SCRIPT language="JavaScript"> <!-- document.write(dispDate2W(0,14)); // --></SCRIPT>

上記の場合、
14時過ぎると出荷日+1、
1月1日が休みで出荷日+1、
また日曜日も出荷日+1
というようなコードになってます。

その中で
土曜日が14:00以降になると
出荷日が日曜日飛んで月曜日になってしまうのですが
土曜日17:00までは日曜日出荷もしたいと考えてます。

考えたのが
function isHolidayに下記を追記

if(myHours >= 17){ if (nday == 0) { return 1; } // 日曜 }

なのですが、ndayの値に6や0が入ってきて
正確に求められませんでした。

どのようにすれば解決できるでしょうか?

質問をまとめると

月~金は14:00までは当日の日付、それ以降は翌日の日付
土曜日は14:00までは当日の日付、14:00~17:00までは翌日の日付、それ以降は月曜日の日付
日曜日は休日

にしたいです。

追記

テストのため、火曜日を休みと想定して下記のように記述しましたが
現在時刻で10/13水になってしまう。

function isHoliday(year,month,date,nday){ nofw=Math.floor((date-1)/7)+1; shunbun=Math.floor(20.8431+0.242194*(year-1980)-Math.floor((year-1980)/4)); syubun=Math.floor(23.2488+0.242194*(year-1980)-Math.floor((year-1980)/4)); if(month==1 && date==1){return 1;} //元旦 if(month==1 && date==2){return 1;} //元旦 if(month==1 && date==3){return 1;} //元旦 if(myHours < 17){ if (nday == 2) { return 1; } // 日曜 } if (nday == 2) { return 1; } // 日曜 return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2021/10/11 02:32

そのコードはどこに挿入したのですか?
oyashiro

2021/10/11 04:05

情報不足失礼しました。 追記しました。
Lhankor_Mhy

2021/10/11 04:28

祝前日については考えなくていいのですね?
oyashiro

2021/10/11 04:50

祝日は無視で大丈夫です。 ご協力とても感謝致します。
guest

回答1

0

ベストアンサー

dispDate2W(0,14)dispDate2W(0,17)とすればいいのでは。
ただ、ご提示このコードは日曜日の判定をしてないように見えますが、それは問題ありませんか?


コメントを受けて追記

こうでしょうか。

js

1if(myHours < 17){ 2 if (nday == 0) { return 0; } // 日曜 3}

ただ、土曜日が祝日で連休になる場合の金曜日の14:00~17:00などについて、想定されている応答になるかどうか確かめた方がいいと思います。

投稿2021/10/11 03:32

編集2021/10/11 05:23
Lhankor_Mhy

総合スコア36960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oyashiro

2021/10/11 04:08

日曜日判定が抜けておりました。追記致しました。 こちらで実装したいことが 月~金は14:00までは当日の日付、それ以降は翌日の日付 土曜日は14:00までは当日の日付、14:00~17:00までは翌日の日付、それ以降は月曜日の日付 日曜日は休日
oyashiro

2021/10/11 06:13

ありがとうございます!今からテストしてみます。
oyashiro

2021/10/11 06:58

テスト結果を追記しました。結論はうまくいきませんでした。
Lhankor_Mhy

2021/10/11 07:05

コードのコピペに失敗しているようですので、ご確認ください。return 0 です。
oyashiro

2021/10/11 07:15

失礼致しました。0にしたところ、うまくいきました。 ありがとうございました。とても助かりました。
Lhankor_Mhy

2021/10/11 07:27

お役に立てたようで何よりです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問