更新日を日本時間にするには?

[上に] [前に] [次に]
わあ [E-Mail] 1999/07/13(火) 12:56:31
ホームページを作成し、更新する際、document.lastModified を使い
更新日時をHP上に明示したいとおもいましたが、グリニッジ標準時で表示されてしまいます。(9時間遅い)
日本時間に直すにはどうしたらよいのでしょう?
お願いします。

maeda [E-Mail] 1999/07/13(火) 13:08:06
 手前味噌で申し訳ないですが、以下を参照してみてください。

http://www.octnet.co.jp/member/maeda/bug/

 実際の使い方はそのページのソースそのものを御覧になってください。

わあ 1999/07/13(火) 14:04:21
ありがとうございます。早速、試してみたのですが、
5行目のdt〜の部分でエラーが出ます。
本当の初心者なのでお手上げです。
教えてください。

maeda [E-Mail] 1999/07/13(火) 19:34:36
 あぅ、確かにあの例ではわかりづらいですね(^_^;

 ただ、そちらの環境(OS、ブラウザの種類)、どのようなエラーが
出たのかがわからないので、はっきりとした回答はできませんが、もし
かしたらブラウザが未対応のスクリプトかもしれません。
 こちらではWin95+NC4.6、Win95+IE4.01、WinNT+NC4.6で動作を確認
しました。WinNT+IE3.0では誤動作を起こしました(日付オブジェクト
の初期値になる)。

maeda [E-Mail] 1999/07/13(火) 19:47:04
 一応ソースを載せておきます。至極単純なスクリプトなので、バグが
入り込む余地はまずないと思うんですが・・・。

dt = new Date(document.lastModified);
if(navigator.appName.charAt(0) == "M") {
    tm = dt.getTime();
    tm = tm + 9 * 60 * 60 * 1000;
    dt.setTime(tm);
}

1行目:document.lastModifiedを日付オブジェクトに変換
2行目:MSIEであることを確認(NNであれば変換しない)
3行目:日付オブジェクトを1970/1/1 0:00:00.000からのミリ秒数に
    変換
4行目:9時間分を追加
5行目:日付オブジェクトに戻す

Nobu3 1999/07/14(水) 01:03:39
ちなみにIE5では、IE用の変換は必要ないみたいです。

maeda [E-Mail] 1999/07/14(水) 12:47:31
>ちなみにIE5では、IE用の変換は必要ないみたいです。
 ありゃ、IE5での動作確認はしてませんので、わかりませんでした(^_^;

maeda [E-Mail] 1999/07/15(木) 00:33:25
 ・・・確認しました。
 確かに9時間時計が進んでますね。むぅ、スクリプト、作り直さなきゃ・・・。

わあ 1999/07/15(木) 11:48:13
私の書いたものをちぇっくしてもらえないでしょうか?

<html>
<head>
<title>日本時間</title>
</head>
<body>
<Script Language="JavaScript">
<!--
dt = new Date(document.lastModified);
if(navigator.appName.charAt(0) == "M") {
tm = dt.getTime();
tm = tm + 9 * 60 * 60 * 1000;
dt.setTime(tm);
}
hour = dt.getHours();
min = dt.getMinutes();
sec = dt.getSeconds();
date = dt.getDay();
month = dt.getMonth();
year = dt.getFullYear();

document.write("更新日: "+year+"/"+month+"/"+date+" "+hour+":"+min+":"+sec);
//-->
</script>
</body>
</html>

これで表示すると6月4日に日付が表示されるのですが・・・
どうしたら今日の日付になるのでしょうか?
たびたび申し訳ありません。

ふじ 1999/07/15(木) 12:47:29
>date = dt.getDay();
>month = dt.getMonth();
date = dt.getDate();
month = dt.getMonth() + 1;
と、しましょう。

http://www.tohoho-web.com/js/date.htm
月は 0〜11(1月が0)、
get.Day() は日でなくて曜日(日曜が0)を返します。

ふじ 1999/07/15(木) 12:48:52
おっとスペルミス。
>get.Day()
getDay()
です。

maeda [E-Mail] 1999/07/15(木) 13:00:44
 すでに回答があがってますね。それに加えて、

>if(navigator.appName.charAt(0) == "M") {

の部分を

if((navigator.appName.indexOf("Microsoft Internet Explorer") >= 0)
&& (parseInt(navigator.appVersion.substring(22, 25)) < 5)) {

としてください(IE5ではちゃんと日本時間に更新されているため)。

わあ 1999/07/15(木) 14:25:14
[[解決]]
出来ました。!!!(^^)Y
ありがとうございました。

maeda [E-Mail] 1999/07/15(木) 17:40:30
 すでに解決されていますが、追記。
 「月」が0から11になっているのは、

MonthName = new Array("Jun", "Feb",・・・,"Dec");
document.write("Today is " + date + " " + MonthName[month]);

というふうに、数字ではなく、文字で表記するためです(欧米圏ではこ
れが標準だから?)。もちろん、月の名前を「卯月」などとすれば日本
語表記もできます。曜日も同様です。

とほほ 1999/07/15(木) 22:25:13
『dt.getFullYear()』は、IE3.0やNN4.0でエラーになっちゃうぞ。
これらのブラウザはgetFullYear()をサポートしていません。

かといって『dt.getYear()+1900』とすると、NN3.0/NN4.0/IE4.0/IE5.0
などで2000年問題を引き起こしちゃうぞ。getYear()は2000年になると、
ブラウザのバージョンによって100を返したり、2000を返したりするので、
困ったもんだ。

という訳で、IE3.0やNN4.0が消え去るまでは、下記のようにするのがオ
ススメです。

  year = dt.getYear();
  if (year < 1900) year += 1900;

[上に] [前に] [次に]