問題: (日付)最終更新日の取得がNaNとなってできない&時差を考慮したい(2011.03.22, 2011.10.13訂正)
解答:
任意のフォーマットにしたい場合、ブラウザによってはできないケースがあります。またブラウザによってはGMT(グリニッジ天文台)で表示されるため、日本時間−9時間になってしまうケースがあります。これらすべてに対応するためのポイントおよび、新コード、従来コードを載せておきます。
ポイント
下記のように、直接Date関数内に、document.lastModifiedを入れるのではなくて
parseでミリ秒のデータに変換し、これにタイムゾーン情報(getTimezoneOffsetで「分」がわかるので、ミリ秒にすべく6000をかける)の是正をした上で、それをセットする手法になります。直接Dateに入れるとブラウザによってNaNになるケースがあるためです。
upDate=new Date(); time = Date.parse(document.lastModified); time = time - (upDate.getTimezoneOffset() * 60 * 1000); upDate.setTime(time);
新コード
upDate=new Date(); time = Date.parse(document.lastModified); time = time - (upDate.getTimezoneOffset() * 60 * 1000); upDate.setTime(time); y=upDate.getFullYear(); m=upDate.getMonth()+1; d=upDate.getDate(); h=upDate.getHours(); mi=upDate.getMinutes(); s=upDate.getSeconds(); if(m<10){m="0"+m;} if(d<10){d="0"+d;} if(h<10){h="0"+h;} if(mi<10){mi="0"+mi;} if(s<10){s="0"+s;} document.write("Last Updated :",y,"/",m,"/",d," ",h,":",mi,":",s);
従来のコード
upDate=new Date(document.lastModified); y=upDate.getFullYear(); m=upDate.getMonth()+1; d=upDate.getDate(); h=upDate.getHours(); mi=upDate.getMinutes(); s=upDate.getSeconds(); if(m<10){m="0"+m;} if(d<10){d="0"+d;} if(h<10){h="0"+h;} if(mi<10){mi="0"+mi;} if(s<10){s="0"+s;} document.write("Last Updated :",y,"/",m,"/",d," ",h,":",mi,":",s);
© Kimiya Kitani