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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

919閲覧

ホームページ上で日付を2週間後に自動更新したい

masamasak

総合スコア17

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/02/27 04:18

前提・実現したいこと

ホームページ上で日付更新を自動化したいです。
javascriptは初心者です。

やりたいことは、

ホームページ上に

更新日:2018/3/1
次回更新予定日:2018/3/15

のように次回更新日は2週間後を表示、
2週間経過するまではどちらもそのままの日付を表示。

2週間後
更新日:2018/3/15
次回更新予定日:2018/3/29

となっているのが理想です。(これを常に繰り返す)

色々とここの過去ログもみたりして、moment.jsを使用したりしている
例をみましたがやりたいこととは違いました。

どなたかご教授願いませんでしょうか?

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

moment.jsを使用して

過去の質問にあった下記スクリプトも試しましたが
思った動きにはなりませんでした。

<script> var nMoment = moment(); var gMoment = moment( '2018-3-14' ).add( 14, 'days' ); function timecheck(){ if ( nMoment >= gMoment ){ document.getElementById ( 'timer' ).innerHTML = gMoment.add( 14, 'days' ).format( 'YYYY年M月D日' ); } } setInterval("timecheck()",1000); </script>

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2018/02/27 04:34

「更新日」の起点はどのように決まっているのでしょうか。
masamasak

2018/02/27 04:44

違っていたら申し訳ないですが、今まで手動更新でしたので起点は特に無くて、最初のスタートはサイトを公開した日になります。
m.ts10806

2018/02/27 04:48

なるほど。了解です。返答いただいた内容で問題ありません。setInterval()の利用は必要性がないように思います。日付をまたいで同じページを見ていることがあるならまだしも、基本、アクセスしなおしたら再計算されますし。setInterval()をコードに入れたのはどのような経緯でしょうか?また、「思った動き」と”違った部分”はどのようなところなのでしょうか?
masamasak

2018/02/27 05:02

基本コードをコピペして、いらないかと思い消してみたら表示されなくなったのでそのまま使用しておりました。また設定の日付(2018-3-14)のところで本日の日付や未来の日付を設定しても表示されなかったのがなぜだろうとずっと彷徨っておりました。
m.ts10806

2018/02/27 05:05

setInterval()は一定時間で繰り返す処理です。繰り返す内容にtimecheck()が含まれていて、そのtimecheck()の中に日付を挿入する記述があるため、ですね。ちょっと今サンプルコードを作ってみています。おおよそできそうなので、もう少々お待ちください。
masamasak

2018/02/27 05:19

申し訳ございませんが、よろしくお願いいたします。
guest

回答2

0

ベストアンサー

moment.jsを利用しました。
ページアクセス時に起点日(質問者さんより”サイトを公開した日”)と現在日付との差を計算して、
周期から更新日、更新予定日を算出するようにしています。

「起点日」のところを自身が入れたい”サイトを公開した日”を入れることで自動で計算してくれるようになってくれている(はず)です。

html

1<p id="update_date"></p> 2<p id="update_plan_date"></p>

javascript

1window.onload = date_set; //ページアクセス時に計算を実行する 2 3var start_date = moment('2018-01-19'); //起点日 4var now = moment(); //現在日付 5 6function date_set(){ 7 8 //起点日からの経過日付 9 diff_days = now.diff(start_date, 'days') ; 10 11 //起点日からの周期を計算 12 step_count = Math.floor(diff_days / 14); 13 14 //更新日付を計算 15 update_date = start_date.add((step_count*14),"days"); 16 17 //更新日を表示 18 document.getElementById ( 'update_date' ).innerHTML = update_date.format("YYYY年M月D日"); 19 //更新日付から14日後を計算して表示 20 document.getElementById ( 'update_plan_date' ).innerHTML = update_date.add(14,"days").format("YYYY年M月D日"); 21} 22

ご確認ください。


追記

起点日をソースコード直に持つのはあまりよくないかもしれません。
例えばjsonファイルなど外部に持っておいたほうが良いかもしれません。
それに、このやり方だとjavascriptで表示されているテキストを書き換えているだけで、
実際はページは何も更新されていません。
「そもそも更新日・予定日とは?」ということも含めて検討する必要があるかと思います。

投稿2018/02/27 05:19

編集2018/02/27 05:27
m.ts10806

総合スコア80850

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

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

m.ts10806

2018/02/27 05:28

そういえば起点日を未来日入れた場合はテストしてませんでした^^; まあ、そこは状況にあわせて調整してみてください。
masamasak

2018/02/27 05:37

試してみました。ばっちりと理想の形になりました。大変ありがとうございました。 外部ファイル化の方は自分でなんとかやってみたいと思います。 更新日・予定日ですが、今後はワードプレス化を考えておりますのでその時までこのやり方を使用させていただきます。 また初めてこのサイトを使わせていただきましたが、こんなにも返答が早く解決できるとは思っておりませんでした。かなり感動です。また使わせていただきます。 本当にありがとうございました。
m.ts10806

2018/02/27 05:52

WordPressを利用するのであればWordPressが採用しているサーバー側の言語(PHP)や提供している機能でできそうに思います。今回の対応をそのままもっていくのはあまり賢明ではありません。
masamasak

2018/02/27 05:54

ワードプレスに変更したらこのやり方はやめます。その時まで使用させていただきます。 ありがとうざいました。
m.ts10806

2018/02/27 06:01

やり方は色々とあるので、状況やサイトにあったやり方を適宜見つけていくと良いと思います。 がんばってください。
masamasak

2018/02/27 06:03

親切・丁寧に教えていただき誠にありがとうございます。 今後もっと勉強していきたいと思います。
guest

0

テキストファイルを一つ用意して、そこに基準日から2週間毎の日付を行ごとに列記することです。
2週に1回なら1年でせいぜい26行、数十年分でもさほど負荷になりません。
その上でajaxでデータを取得して、当日に一番近い過去日が最新の更新日
一番近い未来日が次回更新日とすればいいでしょう。
もちろんテキストに書かれるデータは当初は予定でしかないですが
実際のスケジュールにあわせて任意に書き換えれば実態に合わせることは容易です。

投稿2018/02/27 05:24

yambejp

総合スコア114779

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問