• ベストアンサー

木曜日に日付を更新

木曜日に決まって、ホームページの決まった箇所に書いてある「2000/XX/XX更新」という記述を、その日の日付に更新したいです。 当方デザインの仕事がメインでプログラムについてはあまり詳しくないです。あまり大掛かりではない感じでできる方法はないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.5

No1、No3です。 こんにちは。 >更新をしてなくても毎週木曜日に決まって、日付を取得するスクリプト >があればいいなと思っております その木曜日が休日とか、元旦でもいいのでしょうか? 実際の更新とは関係なく、閲覧者が閲覧した日に直近の木曜日なら#1、#2の回答でよいと思いますが、実際には虚偽の表示になってしまいますね。 例えば、閲覧者が前週に閲覧していたとして、「更新した」という表示があるので、そのページ内を丹念に探したとしても、違いが見つからないということが起こり得ます。 #3の方法と#1の方法を組み合わせれば、「実際の更新日に直近の木曜日を表示」ということも可能ですが、実は、#3で取得できる日付の書式がブラウザによってマチマチであるため、この値を計算に使用するのはエラーを起こす危険性があります。(閲覧者の使用環境による) <参考> http://www.alles.or.jp/~sfujita/jpn/difflast.htm また、スクリプトを使用する際の、表示上の問題として#3のURL先にも書いてありましたように、「スクリプトをオフにしている閲覧者に対してスクリプトの結果が反映されない表示となる」ということがあります。 これに対しては、 1)何も表示せずにおいて、スクリプト有効時のみ表示(#3のURLの方法) 2)表示できる内容(公開日など)を表示しておいて、後からスクリプトで  内容を書き換える。 3)公開日などを表示しておいて、スクリプトで更新日を付け加える。 などの対応があろうかと、思われます。 いずれにしろ、これらの問題に対しては、#1の後半の方法の方が確実に対処が可能です。 とはいえ、スクリプトでの対応例を…(複数あるので、組合わせればOKかと。ただし、後半の計算方法は↑の書式対応の問題は残っています。) 前回のものも少し修正してあります。(setMillisecondsの必要はないのでsetHoursに、式も#2様の式(ちょっと短いので)を借用しました) <html> <head> <script type="text/javascript"> window.onload = function() { //閲覧日に直近の過去の木曜日に書き換え(id=day1) var d = new Date(); d.setHours(-24*((10+d.getDay())%7)); document.getElementById('day1').innerHTML = '最終更新日:' + d.getFullYear() + '/' + (d.getMonth()+1) + '/' + d.getDate(); //実際の更新日を取得して、直近の木曜日を追加表示(id=day2) var d = new Date(); d.setTime(Date.parse(document.lastModified)); d.setHours(-24*((10+d.getDay())%7)); var e = document.getElementById('day2'); e.innerHTML = e.innerHTML + '(最終更新日:' + d.getFullYear() + '/' + (d.getMonth()+1) + '/' + d.getDate() + ')'; } </script> </head> <body> ◇スクリプトがオフの場合の表示状態 <div id="day">公開日:○○/○○/○○</div> <hr><p> ◇閲覧日に直近の過去の木曜日に書き換え <div id="day1">公開日:○○/○○/○○</div> <hr><p> ◇実際の更新日を取得し直近の木曜日を追加 <div id="day2">公開日:○○/○○/○○</div> </body> </html>

pon_nao
質問者

お礼

day2の方は私の環境では表示されなかったのですが day1の方でちゃんと表示されました。 divタグの中に、非表示の場合に念のための日付が書き込んでおけるのがよいですね。 木曜日当日は、その日の日付が表示されるとは思うのですが、 それを確認してから本環境に採用しようと思います。 ありがとうございました。

pon_nao
質問者

補足

更に詳細な記述をありがとうございます。 補足を書きますと、 毎週木曜日に既に売約済みや変更のものがないかをチェックしているという意味で、 もし修正がなくとも更新済の表記にして欲しいとのことで、 (お盆・正月も含め) 上記の内容にあっているとは思います。 実際に設置してから、御礼のポイントを付けるようにしますので、 もうしばらくお待ち下さい。

その他の回答 (4)

回答No.4

#No1も2も、いちばんちかい、かこのもくようびをひょうじしてるじょ! たしかめもしないで・・・・ばぶぅ~!

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

No1です。 スクリプトからでも更新日を取得できましたね。失礼しました。 これが一番簡単だと思います。 http://allabout.co.jp/internet/hpcreate/closeup/CU20041105A/

pon_nao
質問者

補足

これは最終更新日を取得するスクリプトですよね。 木曜日に更新を必ずするわけではないのですが、客先から必ず木曜日に日付を変更してくれとの要望がありまして、 逆に更新してないときは、自分でも抜けてしまうので、 更新をしてなくても毎週木曜日に決まって、日付を取得するスクリプトがあればいいなと思っております。 説明が悪くてすみません。

回答No.2

さきをこされちまった~! でもちょっとだけみじかいので、とうか! <p> <script type="text/javascript"> var n = new Date; n.setHours(24*-((10+n.getDay())%7)); document.write('前回の更新日:'+ (n.getMonth() + 1) + '/' + n.getDate()); </script> </p>

pon_nao
質問者

補足

すいません、上の方と同じく、これは最終更新日を取得するスクリプトですよね。 木曜日に更新を必ずするわけではないのですが、客先から必ず木曜日に日付を変更してくれとの要望がありまして、 逆に更新してないときは、自分でも抜けてしまうので、 更新をしてなくても毎週木曜日に決まって、日付を取得するスクリプトがあればいいなと思っております。 説明が悪くてすみません。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

JavaScriptのカテゴリーへの質問なので、 ◇スクリプトでその日(表示日)以前の、木曜日を計算して表示する。  でも、この方法だと正しい更新日と関係なく、直前の木曜日が表示され  るということになってしまうので、お薦めはできません。 <html> <head> <script type="text/javascript"> window.onload = function() { var d = new Date(); d.setMilliseconds(((10-d.getDay())%7-6)*24*60*60*1000); document.getElementById('day').innerHTML = d.getFullYear() + '/' + (d.getMonth()+1) + '/' + d.getDate() + '更新'; } </script> </head> <body> <div id="day"></div> </body> </html> ◇サーバ側(PHPやCGIなど)で、対象ファイルの更新日を取得して日付  表示の部分を生成して出力。 (またはデータを別に送信)  こちらのほうが、木曜日に限定せずに正しい更新日を表示可能なので  よろしいのではと思います。 <参考> http://blog.loaferz.com/?eid=226594 http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A1%E3%83%A2%2F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%9B%B4%E6%96%B0%E6%99%82%E5%88%BB

pon_nao
質問者

お礼

上の方が今回の要望に近いです!ちょっとこれで試してみます。 ありがとうございます!

関連するQ&A