Javascript

  1. (日付)最終更新日の取得がNaNとなってできない&時差を考慮したい(2011.03.22, 2011.10.13訂正)

問題: (日付)最終更新日の取得が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