見出し画像

SafariだけDateフォーマットが動かない話

こんばんわ。キッチンカーアーティストのジャマです。

今日はもうnoteを書きたくなかったのですが、jsの新たなネタができてしまったので、書いておきます。

SafariはDateのフォーマットが他のブラウザと違うようで、変な動きをするそうです。
それにしっかりハマりました。

こちらの記事にあるように、
1.momentを使ってDate化。
2.Dateを好きな形式でフォーマット
することでDateフォーマットができるとあります。

がしかし!!

私の場合は1はできるのですが、2のフォーマット時に

Invalid Date

と表示されてしまいました。
全く直し方がわからなかったのですが、日付を色々変えると
10月10日→フォーマット成功
10月20日→フォーマット成功
1月1日→フォーマット失敗
2月1日→フォーマット失敗
という状況なのがわかりました。

これを見て何が行けないかわかりますか?

そう、月と日が一桁か二桁の違いですね。
おそらく
01月01日、02月01日はフォーマットが成功すると考えられます。

addZero(data:string){
    let num:number = +data
    if (num >=0 && num < 10){
        return "0" + data
    }

    return data

}

こんな感じの0埋めのコードをTypeScriptで作ってから、再度フォーマット。

無事にフォーマットが成功しました!!

もしmomentでDate化してから、フォーマットができない場合は、0埋めを試してみて下さい。

いいなと思ったら応援しよう!