- ベストアンサー
javascriptで数日後の日付を表示する方法
- javascriptを使用して現在の日付から数日後の日付を表示する方法について説明します。外部ファイルとしてjavascriptを管理する方法も解説します。
- javascriptを使って現在の日付から指定した日数後の日付を表示する方法を紹介します。さらに、2月や小の月(30日)などに正しく対応する方法も示します。
- 日付の計算や表示にはjavascriptのDateオブジェクトを使用します。外部ファイルとしてjavascriptを記述する場合には、scriptタグで読み込む方法を利用します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
文字コードの問題は 1.スクリプトの文字コード種をHTMLに揃える テキストエディタの保存画面で選択してください 2.HTMLに明記する <script type="text/javascript" src="~~~" charset="UTF-8"></script> または <script type="application/javascript" src="~~~" charset="UTF-8"></script> 3.スクリプトの文字列をエスケープする "受付: " を "\u53D7\u4ED8\uFF1A\u3000" に置き換える "報告: " を "\u5831\u544A\uFF1A\u3000" に置き換える (ちなみにこれはalert(escape("文字"))でわかります) それから <img src="受付画像URL"/><div id="OutputArea1"></div> <img src="報告画像URL"/><div id="OutputArea2"></div> としたいのなら //ページが読み込み終わったらDateOutput関数を実行するように登録 addEventListener("load",DateOutput) //DateOutput関数 function DateOutput(){ //他のスクリプトに影響を与えないように、これらの変数をこの関数内だけで有効にする var p,m,d,nm,nd //受付日に足す数を決める p=2 //現在の年月日時=受付年月日時を取得 D=new Date() //受付年月日時から日を取り出す d=D.getDate() //受付年月日時から月(0~11になる仕様なので+1する)を取り出す m=D.getMonth()+1 //現在の年月日時の日をpだけ進めて設定する=報告年月日時 //ここで例えば7/32になっても自動で8/1にしてくれる(ポイント!!) D.setDate(d+p) //報告年月日時から日を取り出す nd=D.getDate() //受付年月日時から月を取り出す nm=D.getMonth()+1 var OA1,OA2 //ページからid属性の値が"OutputArea1"の要素を取り出す OA1=document.getElementById("OutputArea1") OA2=document.getElementById("OutputArea2") //その要素内のHTMLを設定 OA1.innerHTML="\u53D7\u4ED8\uFF1A\u3000"+m+"/"+d OA2.innerHTML="\u5831\u544A\uFF1A\u3000"+nm+"/"+nd //DateOutput関数終わり }
その他の回答 (2)
- b0a0a
- ベストアンサー率49% (156/313)
HTML内に<div id="OutputArea"></div>とあれば addEventListener("load",DateOutput) function DateOutput(){ var p,m,d,nm,nd,OutputArea p=2 D=new Date() d=D.getDate() m=D.getMonth()+1 D.setDate(d+p) nd=D.getDate() nm=D.getMonth()+1 OutputArea=document.getElementById("OutputArea") OutputArea.innerHTML="受付: "+m+"/"+d+"<br>"+"報告: "+nm+"/"+nd }
お礼
早速のご回答ありがとうございます! 回答に返事をしていたつもりが、返事ができていなかったようで お返事が遅くなり申し訳ございません・・・。 上記の方法で試させていただきましたところ、 HTML内に<div id="OutputArea"></div>をおいて add以降を外付けjsに格納したところ無事動きました! ただ、htmlがshift-jisで書いてしまっていることもあり 受付や報告が文字化けしてしまいます・・・。 いまさらhtmlをutfに変えることもできないので ここを文字にしようと考えて色々試行錯誤してみたのですができませんでしたので後少し、教えていただけると助かります! OutputArea.innerHTML="受付: "+m+"/"+d+"<br>"+"報告: "+nm+"/"+nd この一文で出力している受付と報告を、2つに分ける方法が知りたいです。 たとえば、 <img src="受付画像URL"/><div id="OutputArea1"></div> <img src="報告画像URL"/><div id="OutputArea2"></div> というようにしたいのですが、どのようにすればよいでしょうか?
- b0a0a
- ベストアンサー率49% (156/313)
var y,m,d,p,nm,nd y=new Date().getFullYear() m=prompt("月を半角で入力",1)-0 d=prompt("日を半角で入力",1)-0 p=2 if(!m||!d){alert("入力値が不正");return} D=new Date(y,m-1,d+p) nm=D.getMonth()+1 nd=D.getDate() alert("受付: "+m+"/"+d+"\n"+"報告: "+nm+"/"+nd)
お礼
早速教えていただいてありがとうございます。 ただ受付日を入力する形式ではなく、当日を表示させて 報告日を、当日から+2日後に設定するやりかたが知りたいです・・・。 例えば、今日であれば 受付日: 7/22 ← 当日の日付を自動で表示させる。 報告日: 7/24 ← 上記の日付から+2日後に設定する。 このような形が理想的です。 もし可能でしたら、HTML内に書くコードと、Javascriptに書くコードを別々に教えて頂けると助かります。 わかりにくい質問形式で申し訳ございませんでした・・・。
お礼
何度も回答をいただき本当にありがとうございます! 無事できました! やっているうちに、もうひとつできればいいなという点がでてきました。 たとえば、火曜日だけ水曜日だけといったように曜日をきめて除外するようなことはできますでしょうか? 年末年始やお盆を含めて定休日の設定などもできるといいなと思いますがかのうでしょうか? 御礼というよりは、要望が多くなっていって申し訳ありません・・・。