JavaScriptの最終更新日を表示するもので、IEとFireFox両方を使っても、

きちんと2006年○月○日と表示できる書き方を教えて下さい。

現在使用しているものは、IEでは問題ないのですが、FireFoxでみると、106年○月○日となってしまいます。
   ↓
>||
<SCRIPT language="JavaScript">
<!--
LA=new Date(document.lastModified);
NAvi=navigator.appVersion.indexOf("(",0);
NAv=navigator.appVersion.substring(NAvi+1,NAvi+5);
NA=navigator.appName;
MNA=navigator.appName+navigator.appVersion.substring(0,1)+NAv;
Ms="最終更新日:";

if(MNA=="Microsoft Internet Explorer4comp"||NA=="Netscape"){
Ye=LA.getYear();
Mo=LA.getMonth()+1;
Da=LA.getDate();
Day=LA.getDay();
Days=new Array(7);
Days[0]="日";Days[1]="月";Days[2]="火";Days[3]="水";
Days[4]="木";Days[5]="金";Days[6]="土";
document.write(Ms+Ye+"年 "+Mo+"月 "+Da+"日 ("+Days[Day]+") ");
}
else if(MNA=="Microsoft Internet Explorer2comp"){
LE=document.lastModified.length;
Ye=document.lastModified.substring(LE-4,LE);
Mo=document.lastModified.substring(LE-19,LE-17);
Da=document.lastModified.substring(LE-17,LE-14);
Day=document.lastModified.charAt(0);
document.write(Ms+Ye+"年 "+Mo+"月 "+Da+"日 ("+Day+") ");
}
else{
document.write(Ms+document.lastModified);
}
//-->
</SCRIPT>
||<


宜しくお願い致します。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2006/12/18 16:24:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Mook No.2

回答回数1314ベストアンサー獲得回数393

ポイント70pt

getYear() は西暦を返すか、1900年からの経過年数を返す仕様になっていますが、どのブラウザがその仕様であるかはまちまちであるようです。

それを判定で、処理するのは大変なようです。


古いブラウザ(IE3等)では使えないようですが、4桁の年数を返すgetFullYear()がありますので、これを使ってはどうでしょうか。

if(MNA=="Microsoft Internet Explorer4comp"||NA=="Netscape"){
    Ye=LA.getFullYear();
    Mo=LA.getMonth()+1;
    Da=LA.getDate();
    Day=LA.getDay();
    Days=new Array("日","月","火","水","木","金","土");
    document.write(Ms+Ye+"年 "+Mo+"月 "+Da+"日 ("+Days[Day]+") ");
}

ちなみに配列は、上記のように初期化できます。

御参考までに。

id:SumireS

成功しました。

わかりやすいご説明を頂きまして、ありがとうございました。

回答ありがとうございました。

2006/12/14 11:13:21

その他の回答1件)

id:STRing No.1

回答回数351ベストアンサー獲得回数36

ポイント40pt

getYear() は User-Agent によって返す値の基準が違う(違った)のが原因です。

最近の modern な UA だけを対象にするのであれば getFullYear() を使うだけです。

lastModified = new Date(document.lastModified);

lmYear = lastModified.getFullYear();
lmMonth = lastModified.getMonth() + 1;
lmDate = lastModified.getDate();
lmDay = lastModified.getDay();
lmDays = new Array("日", "月", "火", "水", "木", "金", "土");

document.write("最終更新: " + lmYear + "年" + lmMonth + "月" + lmDate + "日" + lmDays[lmDay] + "曜日\n");

これだけだって動きます。 IE5 以降とか、 Netscape 6(Mozilla) なら。

返す値の違いについては以下が参考になるでしょう。

日付(Date)

id:SumireS

すみません。

うまくいきませんでした。

書き方がわかっていないので・・・

回答ありがとうございました。

2006/12/14 10:44:43
id:Mook No.2

回答回数1314ベストアンサー獲得回数393ここでベストアンサー

ポイント70pt

getYear() は西暦を返すか、1900年からの経過年数を返す仕様になっていますが、どのブラウザがその仕様であるかはまちまちであるようです。

それを判定で、処理するのは大変なようです。


古いブラウザ(IE3等)では使えないようですが、4桁の年数を返すgetFullYear()がありますので、これを使ってはどうでしょうか。

if(MNA=="Microsoft Internet Explorer4comp"||NA=="Netscape"){
    Ye=LA.getFullYear();
    Mo=LA.getMonth()+1;
    Da=LA.getDate();
    Day=LA.getDay();
    Days=new Array("日","月","火","水","木","金","土");
    document.write(Ms+Ye+"年 "+Mo+"月 "+Da+"日 ("+Days[Day]+") ");
}

ちなみに配列は、上記のように初期化できます。

御参考までに。

id:SumireS

成功しました。

わかりやすいご説明を頂きまして、ありがとうございました。

回答ありがとうございました。

2006/12/14 11:13:21

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません