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

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

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

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

Q&A

1回答

533閲覧

Javascriptで、指定の日からn営業日前を表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

1クリップ

投稿2023/01/23 10:07

編集2023/01/24 11:40

当方の期待していた初心者向けの回答が得られなかったため、やむを得ずマルチポストにて解決に至りました。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10274446285

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2023/01/24 01:42

どうやらこちらでは素人は質問してはいけないようなので、他の解決策をとらせていただいた次第です。 より親切な方に助けを求めたいと思います。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2023/01/24 01:44

ご助言感謝いたします。
退会済みユーザー

退会済みユーザー

2023/01/24 02:32

解決次第、ヘルプの記載に従い、そちらへのリンクと解決方法を投稿いたします。
guest

回答1

0

営業日で計算する場合は原則専用のカレンダーを用意しておく必要があります。
祝日だけでなく、振替休日やその組織の専用休(お盆や年末年始)もあるでしょうし

参考

*202320222021202020192018
元日23/01/0122/01/0121/01/0120/01/0119/01/0118/01/01
休日23/01/02
成人の日23/01/0922/01/1021/01/1120/01/1319/01/1418/01/08
建国記念の日23/02/1122/02/1121/02/1120/02/1119/02/1118/02/11
休日18/02/12
天皇誕生日23/02/2322/02/2321/02/2320/02/23
休日20/02/24
春分の日23/03/2122/03/2121/03/2020/03/2019/03/2118/03/21
昭和の日23/04/2922/04/2921/04/2920/04/2919/04/2918/04/29
休日19/04/3018/04/30
休日19/05/01
休日19/05/02
憲法記念日23/05/0322/05/0321/05/0320/05/0319/05/0318/05/03
みどりの日23/05/0422/05/0421/05/0420/05/0419/05/0418/05/04
こどもの日23/05/0522/05/0521/05/0520/05/0519/05/0518/05/05
休日20/05/0619/05/06
海の日23/07/1722/07/1821/07/2220/07/2319/07/1518/07/16
スポーツの日21/07/2320/07/24
山の日23/08/1122/08/1121/08/0820/08/1019/08/1118/08/11
休日21/08/0919/08/12
敬老の日23/09/1822/09/1921/09/2020/09/2119/09/1618/09/17
秋分の日23/09/2322/09/2321/09/2320/09/2219/09/2318/09/23
休日18/09/24
スポーツの日23/10/0922/10/1019/10/1418/10/08
休日19/10/22
文化の日23/11/0322/11/0321/11/0320/11/0319/11/0318/11/03
休日19/11/04
勤労感謝の日23/11/2322/11/2321/11/2320/11/2319/11/2318/11/23
天皇誕生日18/12/23
休日18/12/24

カレンダーを利用した営業日計算

仮に2018/1/1以降で良いなら、

javascript

1const eigyobi=[] 2const h=["2018/1/1","2018/1/8","2018/2/11","2018/2/12","2018/3/21","2018/4/29","2018/4/30","2018/5/3","2018/5/4","2018/5/5","2018/7/16","2018/8/11","2018/9/17","2018/9/23","2018/9/24","2018/10/8","2018/11/3","2018/11/23","2018/12/23","2018/12/24","2019/1/1","2019/1/14","2019/2/11","2019/3/21","2019/4/29","2019/4/30","2019/5/1","2019/5/2","2019/5/3","2019/5/4","2019/5/5","2019/5/6","2019/7/15","2019/8/11","2019/8/12","2019/9/16","2019/9/23","2019/10/14","2019/10/22","2019/11/3","2019/11/4","2019/11/23","2020/1/1","2020/1/13","2020/2/11","2020/2/23","2020/2/24","2020/3/20","2020/4/29","2020/5/3","2020/5/4","2020/5/5","2020/5/6","2020/7/23","2020/7/24","2020/8/10","2020/9/21","2020/9/22","2020/11/3","2020/11/23","2021/1/1","2021/1/11","2021/2/11","2021/2/23","2021/3/20","2021/4/29","2021/5/3","2021/5/4","2021/5/5","2021/7/22","2021/7/23","2021/8/8","2021/8/9","2021/9/20","2021/9/23","2021/11/3","2021/11/23","2022/1/1","2022/1/10","2022/2/11","2022/2/23","2022/3/21","2022/4/29","2022/5/3","2022/5/4","2022/5/5","2022/7/18","2022/8/11","2022/9/19","2022/9/23","2022/10/10","2022/11/3","2022/11/23","2023/1/1","2023/1/2","2023/1/9","2023/2/11","2023/2/23","2023/3/21","2023/4/29","2023/5/3","2023/5/4","2023/5/5","2023/7/17","2023/8/11","2023/9/18","2023/9/23","2023/10/9","2023/11/3","2023/11/23"]; 3for(let i=new Date('2018/1/1').getTime();i<=new Date('2023/12/31').getTime();i+=60*60*24*1000){ 4 const j=new Date(i).toLocaleDateString(); 5 if(!h.includes(j) && 6 [1,2,3,4,5].includes(new Date(i).getDay()) && 7 !new RegExp('/(12/(29|30|31))|(1/(2|3))$').test(j) 8 ){ 9 eigyobi.push(j); 10 } 11} 12 13const d="2023/1/23"; 14const index=eigyobi.indexOf(d); 15for(var i=1;i<100;i++){ 16 console.log(`${i}営業日前は${new Date(eigyobi[index-i]).toLocaleDateString()}`); 17}

投稿2023/01/23 10:29

編集2023/01/23 12:56
yambejp

総合スコア114896

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

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

退会済みユーザー

退会済みユーザー

2023/01/23 10:38

年末年始(12月29日~1月3日)以外はカレンダー通りです。コードの通り、定期的にメンテナンスするつもりですが、これではいけないのでしょうか?
yambejp

2023/01/23 10:41

祝日は休まないなら土日だけで大丈夫ですよ 祝日はガンガンがかわるものですから、専用のカレンダーをつくらないなら無理です
退会済みユーザー

退会済みユーザー

2023/01/23 10:57

ご返信ありがとうございます。 無理だという答えではなく、どうしたら良いか知りたいので、どのようなカレンダーを作るのか、作ったとして、どのように使えば良いか、ご教示いただければ幸いです。 旧暦を使っている国とは違い、日本の祝日は突然変わるものではないので、できれば私が作成したコードをうまく転用できる他の方法があれば助かります。
yambejp

2023/01/23 12:02 編集

> 日本の祝日は突然変わるものではない 変わります。実際変わっています。 ○年○月○日という休みの一覧データを作っておくだけです。それを面倒だというのであれば無理です 内閣府のデータもあるようですが、CORSに引っかかるので、jsで任意に取りに行くことはできないですね 「昭和30年(1955年)から令和5年(2023年)国民の祝日」 https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv 参考までに過去5年分休日の変遷を追記しておきました。 いかに休日が変わりまくっているか理解できると思います
maisumakun

2023/01/23 11:31

> 旧暦を使っている国とは違い、日本の祝日は突然変わるものではないので 現行の祝日法でも、「春分・秋分」というめんどくさい計算が加わってきますし、東京オリンピックや皇室関連の行事である年だけ祝日が発生する、ということも現実に起きます。
退会済みユーザー

退会済みユーザー

2023/01/23 13:42

ここで祝日が変わる、変わらないの議論をしたい訳ではないのですが…。やりたい事は、これから発生する発注管理なので、2022年の祝日すら不要です。 私が提示したコードにもある通り、ご提示いただいたconst h に任意の祝日、休業日を設定し、必要に応じて随時メンテナンスすれば良いのだと認識しておりますが、これをscriptに入れてから、body側はどのように設定すればよろしいのでしょうか? 素人なので、お相手いただくのもご面倒でしょうが、何卒私の望みが叶います様に、プロの皆様に力をお貸しいただける事を祈っております。 ご教示のほど、よろしくお願いいたします。
yambejp

2023/01/23 13:43

回答はみてませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問