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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

3641閲覧

javascriptで3週間後の日付を出したい、指定の曜日を飛ばしたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/01/14 15:01

編集2020/01/14 15:04

前提・実現したいこと

プログラミング初心者です。
仕事で早急に必要になったため、手探りでいろんな方のサイトを見ながら作っています。
html/cssはほんの少しかじった程度、プログラミング言語は無知のため、質問自体に問題があったら申し訳ありません。
2つ質問させていただきます。

1:サイトに書かれていた<input type="date">を使ってChrome/Edgeで確認すると空欄のままです。
枠を押すと今日の日付が選択できますが、他の日に変更ができるようです。
出来たら<input type="date">を使って3週間後の日付(可能であれば曜日も)を出したいのですが、反応してくれません。
<input>ではだめなのかと思い、<script>で日付表示をすると、同じように今日の日付は出ますが3週間後を指定するとプレビューから文字が消えてしまいます。
<input>のjavascriptは下のソースコードに貼っています。
html内に<script>はいれています。

<script>  var hiduke=new Date();  var year = hiduke.getFullYear();  var month = hiduke.getMonth()+1;  var week = hiduke.getDay();  var day = hiduke.getDate();  var yobi= new Array("日","月","火","水","木","金","土");  document.write(+year+"/"+month+"/"+day+"/ "+"("+yobi[week]+")"); </script>

var hiduke=new Date()+21;
と打ってみたのですが、ここに記入するだけではいけないのでしょうか?

2:3週間後の日が祝日だと次の日に自動的に変更されるようにもしたいのですが、調べてもなかなか引っかからず。。
javascriptでは難しいのでしょうか?他の言語では可能ですか?

<script>か<input>でいけるのであればやり方を教えていただきたいです。 ### 該当のソースコード ```ここに言語名を入力 function () { var tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate()+21); //翌日の日付を取得 var yyyy = tomorrow.getFullYear(); var mm = ("0"+(tomorrow.getMonth()+1)).slice(-2); var dd = ("0"+tomorrow.getDate()).slice(-2); document.getElementById("tomorrow").value=yyyy+'-'+mm+'-'+dd; } ``` ### 試したこと https://qiita.com/acht_web/items/cb5edabb5f835fc0c27f http://wakalog.hatenadiary.jp/entry/2017/10/25/104040 https://www.pazru.net/js/date/1.html を参考しています。

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

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

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

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

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

thyda.eiqau

2020/01/14 15:22

> 1:サイトに書かれていた<input type="date">を使ってChrome/Edgeで確認すると空欄のままです。 > 枠を押すと今日の日付が選択できますが、他の日に変更ができるようです。 固定で、ページを開いた時点から3週間後の日付を表示したい、表示内容はユーザーが操作(変更)できないようにしたいという意味ですか? 要件は、「3週間後の日付を表示すること」であって、表示できればなんでもよいのか、それともinputにこだわる必要があるのか、ご提示ください。
kyoya0819

2020/01/14 15:25 編集

アドバイスだけですが、今現在。JavaScriptに日本の祝日を判別するなんて、気配りのきいた機能はないので何かしらのAPIを使う必要があります。
退会済みユーザー

退会済みユーザー

2020/01/14 15:41

>>thyda.eiqau様 <input>での表示が格好よさそう、というだけです。 3週間後の日付が出るのならどのものでも大丈夫です。 ・・・すみません、こうやって返答するより編集したほうがいいのでしょうか 編集したほうがいいのであればすぐに編集します。 >>asuchi0819様 そうなのですか、どうりで出てこないわけですね・・。 教えてくださってありがとうございます。
guest

回答1

0

ベストアンサー

3週間後の表示はなんでもいいとのことなので、textContentにベタ書きしています。
追記・修正の依頼の欄にasuchi0819さんからコメントがありますが、JavaScriptに、どの日が祝日かどうかを判別してくれる機能はないです。そもそも世界中で使われているので日本の祝日がどうこうというのが現実的ではないことはおわかりになるかと思います。

一般的にはGoogleカレンダーAPIを利用して取得することもあるかと思いますが、そこまででなければ内閣府が祝日のCSVを提供しているので、ダウンロードしてきて使うというのもありかと思います。今回はコード中に直接書いていますが、ダウンロードしてきたCSVをHTMLと同じサーバーにアップロードすればAjax (fetch) でも取得可能です。PHPなどが使えるなら内閣府に直リンすることもできますが、お行儀がよくないので推奨はできません。

html

1<!doctype html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<title>demo</title> 6</head> 7<body> 8<main> 9 <p>ページを開いた日時: <span id="today"></span></p> 10 <p>3週間後: <span id="after3weeks"></span></p> 11 <p>3週間後が祝日ならその次の日: <span id="after3weeksIfHoliday"></span></p> 12</main> 13</body> 14</html>

js

1const weekdays = ['日', '月', '火', '水', '木', '金', '土']; 2 3// https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv 4const holidaysCsvFromCabinetOffice = `国民の祝日・休日月日,国民の祝日・休日名称 52020/1/1,元日 62020/1/13,成人の日 72020/2/11,建国記念の日 82020/2/23,天皇誕生日 92020/2/24,休日 102020/3/20,春分の日 112020/4/29,昭和の日 122020/5/3,憲法記念日 132020/5/4,みどりの日 142020/5/5,こどもの日 152020/5/6,休日 162020/7/23,海の日 172020/7/24,スポーツの日 182020/8/10,山の日 192020/9/21,敬老の日 202020/9/22,秋分の日 212020/11/3,文化の日 222020/11/23,勤労感謝の日 23`.split(/\r\n+/).map(row => row.split(',')[0]); 24 25const now = Date.now(); 26const today = new Date(now); 27const afterThreeWeek = new Date(now + 3 * 7 * 24 * 60 * 60 * 1000); // 3週 * 7日 * 24時間 * 60分 * 60秒 * 1000ミリ秒 28 29let ifHolidayDate = new Date(afterThreeWeek.getTime()); 30while(holidaysCsvFromCabinetOffice.indexOf(`${ifHolidayDate.getFullYear()}/${ifHolidayDate.getMonth()+1}/${ifHolidayDate.getDate()}`) !== -1) { 31 ifHolidayDate = new Date(ifHolidayDate.getTime() + 24 * 60 * 60 * 1000); 32} 33 34document.getElementById('today').textContent = `${today.getFullYear()}/${today.getMonth()+1}/${today.getDate()} (${weekdays[today.getDay()]})`; 35document.getElementById('after3weeks').textContent = `${afterThreeWeek.getFullYear()}/${afterThreeWeek.getMonth()+1}/${afterThreeWeek.getDate()} (${weekdays[afterThreeWeek.getDay()]})`; 36document.getElementById('after3weeksIfHoliday').textContent = `${ifHolidayDate.getFullYear()}/${ifHolidayDate.getMonth()+1}/${ifHolidayDate.getDate()} (${weekdays[ifHolidayDate.getDay()]})`; 37

投稿2020/01/14 15:48

thyda.eiqau

総合スコア2982

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

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

退会済みユーザー

退会済みユーザー

2020/01/14 16:33

細かく教えてくださりありがとうございます! 今日1日ずっと悩んでいたのでとても助かりました。 2つ目の回答まで答えていただけると思わなかったのでとても嬉しいです。 夜遅くの質問だったのにすぐに回答していただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問