2012年7月26日木曜日

ブラウザによるDateの違い

ブラウザによる、Date型の扱いの違いには、頭を悩ませています。
例えば、ブラウザにより、下記のコードは動いたり、動かなかったりします。

var str = '2012-07-23';
var d = new Date(str);

対策として、
if(d == 'Invalid Date'){
  var s = str.replace(/-/g, '/');
  d = new Date(s);
}

を付ければ、それなりに動きます。
しかし、時差への配慮が異なるため、d.getTime()は、ブラウザにより、異なる値になります。

結局、Date型に、文字列表記の時間を与えるのは、混乱の元だと考えました。
文字列から、年、月、日などを抜き出し、それぞれを、setYear、setMonthなどで設定するのが、一番です。

0 件のコメント:

コメントを投稿