最終更新日の表示が変なんです。

[上に] [前に] [次に]
Asuka [E-Mail] 1998/02/01(日) 23:54:26
最終更新日を表示させたいと思って、

<script language="JavaScript">
document.write(document.lastModified);
</script>

と入力してみましたが、なぜかいつも9時間遅れています。
例えば20時だったら11時となるのです。原因はいったい
何なのでしょうか。パソコン側の設定ではないと思うのですが・・・

B-Cus 1998/02/02(月) 00:41:00
> なぜかいつも9時間遅れています。

GMT(世界標準時)になっているんでしょう。

サーバの設定次第かと思いますが、詳しい解決方法は
わかりません。

とほほ 1998/02/02(月) 00:56:29
Date.parse()を用いて日付を解釈して自前で日本時間に直せばよいかな。

としみ [E-Mail] 1998/02/02(月) 16:18:04
JavaScriptはクライアント(ブラウザ)側で動作するのでサーバは関係ないと思います。
OSの設定じゃないですか?

とほほ 1998/02/02(月) 22:48:20
そういえばそうだ。「パソコン側の設定」だ・・・・(にが笑い)

miyasiro 1998/02/03(火) 01:48:10
えっ?
document.lastModified は、サーバーから送られて来る HTML ファイルの
最終更新日時をそのまま使ってるんじゃぁないんですか?

miyasiro 1998/02/03(火) 01:54:15
あっ!そうか。
NN では、ローカルでも表示できましたね。
ということは、最初の質問の Java Script を埋め込んだ HTML ファイルが
ローカルにあるのか、サーバーにあるのか、
によるのかな?
(オンラインで書いてるので、まるっきり違うかも…)

としみ [E-Mail] 1998/02/03(火) 13:22:52
> document.lastModified は、サーバーから送られて来る HTML ファイルの
> 最終更新日時をそのまま使ってるんじゃぁないんですか?
サーバからの日付をそのまま表示しているわけではないようです。
サーバからはGMTで送られてくるのを、ブラウザ側ではローカル時間に変更しているようです。
OS側の設定が正しいかどうかは以下のコードで確認できると思います。

<SCRIPT LANGUAGE=JavaScript>
var today = new Date();
alert('TimezoneOffset='+ today.getTimezoneOffset()/60);
</SCRIPT>

この結果が-9ならOKです。

Asuka 1998/02/03(火) 15:01:09
レスが遅れて申し訳ありません
B-cusさん、とほほさん、としみさん、miyasiroさん、
本当にありがとうございます。

最初に、すいませんです。どうも完全にこちらの状況を
書いていなかったようですね。すべてローカルです。そして
ブラウザはIE4.0を使用していました。

まだJavaScriptにはあまり詳しくないのですが、lastModifiedは
ただ単に、そのソースファイルが更新された日付、Windowsなら
プロパティで見られるその日付を表示するのではないでしょうか。

上のとしみさんのソースを入力してみたら、ちゃんと-9とでました。
ますますわけわからなくなったので、ブラウザを変えてみることに
しました。すると・・・
一応解決・・・なのかどうかはわかりませんがどうもこれはブラウザの
問題のようでしたよ。僕はIE4.0を使ってHTMLの編集をしているの
ですが、IEを使ってみたときのみ表示がおかしくなるようです。
NNを使って見てみたところ、表示に問題はありませんでした。
う〜ん、これがIE4.0の呪いですか(笑)。それともやっぱり
僕が悪いのかな?

迷惑ついでにもう一つ質問させていただきます。
最終更新日のうち何年何月何日だけを取り出すことはできますか?
getYear()みたいに。



miyasiro 1998/02/03(火) 16:00:10
To:としみ さん
>サーバからの日付をそのまま表示しているわけではないようです。
>サーバからはGMTで送られてくるのを、ブラウザ側ではローカル時間に変更しているようです。
これは知りませんでした。なるほど、クライアントは、普通自分のローカル時間での
前回のアクセスの日時を lastModified の表示日時と比較するでしょうから、その方が
合理的ですよね。
ありがとうございます。

To:Asuka さん
NN なら
d = new Date(document.lastModified)
で d.getYear() などが使えます。
ただ、IE3 だと、ローカルでは全て 70/1/1 になってしまいました。
IE4 は分かりません。

hiro-kim 1998/02/03(火) 20:22:11
年月日だけを表示させたい場合,私は単純に,"02/03/98"という8文字長の文字列として切り出しています。
  document.write(document.lastModified.substring(0,8))

ちなみに,NNでは正常だがIEでは異常な lastModifiedの件ですけれども,set TZ=JST-9 を autoexec.batに指定して再起動したらIEでもうまくいくんじゃないかなあ,と試してみたら
  ダメ
でした,念のため。

miyasiro 1998/02/03(火) 21:54:44
ちょっと勘違いがありました。
IE3 の場合、ローカルでは document.lastModified が正しい日付を返さないと
思い込んでいたのですが、実際はちゃんと更新日付を返してました。
ただ、「火 2 03 21:24:06 1998」というような形式なので、Date() や
Date.parse() の引数に使っても 0 と解釈されて 70/1/1 になってしまう
ということで、ローカルかどうかは関係ありませんでした。すいません。

To:hiro-kim さん
>set TZ=JST-9
DOS の環境変数が Windows アプリに影響を与えるようなことが他にあるのでしょうか?

とほほ 1998/02/03(火) 22:23:29
なんだか、これまでのみなさんの意見を読んでいると、
「lastModified は使い物にならないから使わない」
というのが一番現実解になっちゃいそうですね・・・
WebAutoなどでダウンロードしたページのlastModified
はダウンロードした日になっちゃいそうだし・・・・

としみ [E-Mail] 1998/02/04(水) 12:56:59
>>set TZ=JST-9
>DOS の環境変数が Windows アプリに影響を与えるようなことが他にあるのでしょうか?

Windows NT 4.0での話ですが、NN3(3.04で確認)だと環境変数TZを参照しているようです。
TZを設定しないとTimezoneOffset/60は8になります。
ちなみにNN4では参照していないようです。

Asuka 1998/02/04(水) 13:04:05
[[解決]]
とほほさんのおっしゃるように、「lastModifiedは使わない」
というのが一番いいような気がしてきました。
でも一応miyasiroさんに教わった

last=new Date(document.lastModified);
document.write(last.getYear()+"/"+・・・・・・・・);

という形で表示しようと思います。
まあ結局lastModifiedが悪い訳ではなさそうです。
だから解決ということにしようと思いますが。
でも・・となると原因はブラウザ・・(?)・・なのかな・・
う〜〜ん

また何かトラブったらこのラウンジに駆け込んでくるかも
しれませんが、その時もよろしくお願いいたします。
レスをくれた方々、本当にありがとうございました。



miyasiro 1998/02/04(水) 23:21:25
To: としみ さん
>TZを設定しないとTimezoneOffset/60は8になります。
なるほど、そういうこともあるんですか。覚えておきます。
DOS 時代には、参照するツールがいくつかあったので、set TZ=JST-9 は
設定していたのですが…

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