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埋めを試してみて下さい。