読者です 読者をやめる 読者になる 読者になる

/dev/null

(◞‸◟)

SafariやFirefoxではハイフン区切りでDateオブジェクトを作れない

まぁそのままの通りなんだけど。

自分はPostgreSQLをメインで業務で触っていて、時刻データはtimestamp型のカラムに保存している。 で、PostgreSQLのタイムスタンプはハイフン区切りで入っている。

=> select * from temptable ;
     start_date
---------------------
 2015-01-01 00:00:00
(1 row)

これをサーバーサイドのアプリケーションから読み出してvelocityとかのtemplateエンジンに食わせて、html側のJSでDateオブジェクトを生成するということを割とやる。

開発時のチェックはChromeでやるのがメインだったから気付かなかったが、あるときiPhoneSafariでその時刻を表示している箇所がNaN:NaNみたいな感じに。 最初は原因がわからずしかも再現するひとしない人がいて辛かった。

が、Safariなどではハイフン区切りの時刻をDateに食わすと invalid Dateとして認識されてしまうことがわかった。

以下再現。おそらくiPhoneなどでのSafariも同様のログが見られるとは思う。

Chrome: ハイフン区切りでスラッシュ区切りで問題なく、ミリ秒が付加されているようなデータも問題なくDateオブジェクトを生成できている。

f:id:gitpub:20150502230127p:plain

Safari: ハイフン区切りはInvalid Dateに、スラッシュ区切りのみ受け入れる。ミリ秒もダメ。

f:id:gitpub:20150502230258p:plain

FirefoxSafariと同様にハイフン区切りとミリ秒はInvalid Dateとして扱われる。

f:id:gitpub:20150502230439p:plain

Chromeが平気なだけに気づきづらい問題なので気をつけたい。