Dateをnewするときに渡す日付の書式でハマってしまった。
再現コード。
以下すべて、各ブラウザの開発ツールのコンソール上で実行。
Chrome 20.0.1132.57 m
new Date('2012/01/01 00:00:00');
Sun Jan 01 2012 00:00:00 GMT+0900 (東京 (標準時))
new Date('2012-01-01 00:00:00');
Sun Jan 01 2012 00:00:00 GMT+0900 (東京 (標準時))
FireFox 12.0
>>> new Date('2012/01/01 00:00:00');
Date {Sun Jan 01 2012 00:00:00 GMT+0900}
>>> new Date('2012-01-01 00:00:00');
Date {Invalid Date}
Safari 5.1.7
new Date('2012/01/01 00:00:00');
Sun Jan 01 2012 00:00:00 GMT+0900 ( (W))
new Date('2012-01-01 00:00:00');
Invalid Date
InternetExplorer 9
>> new Date('2012/01/01 00:00:00');
Sun Jan 1 00:00:00 UTC+0900 2012
>> new Date('2012-01-01 00:00:00');
Invalid Date
とある、JSライブラリを使ったちょっと凝った見た目の画面にて、
Chrome以外のブラウザで正常に表示できないという不具合が発生。
原因は、ライブラリに受け渡すXMLデータ上で、日付のフォーマットが
ハイフン区切りになっていたこと。
MySQLを扱ってる人には見なれたフォーマットですね。
JavaScript的には、スラッシュ区切りが正解なので、
うっかりそのまま出力した僕のミスです。
ただ、人の作ったライブラリ&日付の解釈が問題になるのがかなり奥の方のコードだったので
原因に気づくまで相当時間をかけてしまった…。
あと、「Chromeで見れればほかのブラウザでも見れるだろう」なんて安易な考えをしたのも間違い。
普段なら4ブラウザで確認はとるんだけど、
このライブラリの稼働実績がすでにあったので、
1つのブラウザで表示できれば問題ないと思ってしまった。
確認、大事。
ちなみに、Chromeはこんな書式でも正常に解釈したりする。
new Date('2012-01/01 00:00:00');
Sun Jan 01 2012 00:00:00 GMT+0900 (東京 (標準時))
日付の区切りは、-か/であればよい、という判断なのかな…?
0 件のコメント:
コメントを投稿