Skip to content
This repository has been archived by the owner on Jun 1, 2023. It is now read-only.

dayjsのアップデートとともにformatDateを修正し「1月1日」誤表記問題を回避する #5157

Closed
kaizumaki opened this issue Jul 31, 2020 · 5 comments · Fixed by #5158
Labels
improvement 改善や新機能の要望

Comments

@kaizumaki
Copy link
Collaborator

kaizumaki commented Jul 31, 2020

改善詳細 / Details of Improvement

  • dayjsを1.8.29から1.8.31にアップデートしたところ、ところどころの日付が「1月1日」と誤表記されることがわかりました。 日付が「1月1日」になっている #5150
  • dayjsで正規表現の実装が変更されたためのようです。
    iamkun/dayjs@v1.8.29...v1.8.31#diff-deacbb7ba720e1d8d121b6fe08bad977R29
  • jsonから読み取る日付のフォーマット部分で、スラッシュ区切りで返すようになっています。
    https://github.com/tokyo-metropolitan-gov/covid19/blob/5ec51b0ca6964cea349c09f6da038ae38bf95dc5/utils/formatDate.ts#L69
  • '2020/7/31'.match(/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/) これが1.8.31の日付文字列を判定する正規表現で、nullを返します。
    '2020/7/31'.match(/^(\d{4})-?(\d{1,2})?-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/) こっちが1.8.29で、これならパースしてくれます。
    もともとスラッシュを想定していなくて、ハイフン区切りを期待した正規表現です。これまで動いていたのがラッキーなんだと思います。
  • というわけで、スラッシュ区切りではなくハイフン区切りの値を返すように変更します。

期待する見せ方・挙動 / Expected behavior

  • dayjsを1.8.31にアップデートする
  • 日付が正しく表示される

動作環境・ブラウザ / Environment

  • macOS / Windows / Linux / iOS / Android
  • Chrome / Safari / Firefox / Edge / Internet Explorer
@kaizumaki kaizumaki added the improvement 改善や新機能の要望 label Jul 31, 2020
@kaizumaki
Copy link
Collaborator Author

対応します。

@goki90210
Copy link
Contributor

プログラム的にはISO形式で日付のやり取りをしたほうが良いかもしれませんね。(表示時に"/"区切りにする)

@kaizumaki
Copy link
Collaborator Author

@goki90210 フォローありがとうございます!
そうですね。こちら #5158 (comment)@munierujp さんがコメントしていただいたように、まずはDate型にしようと思います。

@iamkun
Copy link

iamkun commented Aug 2, 2020

As the author of Day.js, I'd like to offer some help if needed.

@iamkun
Copy link

iamkun commented Aug 3, 2020

This might fix this issue iamkun/dayjs#980

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
improvement 改善や新機能の要望
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants