Posted at

ブラウザによって、JSエンジンが解釈できる「日付書式」が違う

More than 1 year has passed since last update.

この記事は BRIGHT VIE Advent Calendar 2017 16日目の記事になります。


はじめに

私が、IonicなどのiOSアプリやWebアプリを開発している時、

ブラウザはChromeを使い開発しています。

Chromeで動作検証をし、問題なさそう!と思ったタイミングで、

実機へ移すと「スクリプトエラーでてるやん・・・」みたいなことがたまにあります。


ChromeとSafariのJSエンジンの違い

この違いによって、Mac上(Chrome)では上手く動いていたのに、

実機へもっていくとスクリプトエラーで動かない!といったケースが起こってしまいます。

■各ブラウザごとのJSエンジンの違い

Chrome:Chrome V8

Safari:JavaScriptCore


Date型の書式解釈の違い

「そんな書き方だめでしょ!」という批判は、今回は無しでお願いしますw

以下の書き方は、ChromeもSafariもOKです。

var f = new Date("2017/02/03 14:00");

console.log(f);

//Chrome・Safari ◯
// → Fri Feb 03 2017 14:00:00 GMT+0900 (JST)

ですが、以下の書き方はSafariでは怒られます。

var f = new Date("2017-02-03 14:00");

console.log(f);

//Chrome ◯
// → Fri Feb 03 2017 14:00:00 GMT+0900 (JST)

//Safari ✕
// → Invalid Date

「ハイフン付きの日付書式なんて使っちゃだめだよ」と言われてしまいそうですが、

使ってしまったものは仕方ないので、

「以降注意していこう!」と、自分自身に気をつけながら日々成長です。

(そもそも、なんでこんな差異がエンジンごとにでてしまうんだ、、そっちを直してくれ!ともたまに思いますw)