40代からのフリーランス

Ruby on RailsとiOS(Swift、Objective-C)でスタートアップのサービス開発を支援しています。

くら寿司アプリに見る日付関連の地雷

すでに更新されて修正済みのようですが

こんなニュースがありました

 

tech.nikkeibp.co.jp

 

ちなみにくら寿司アプリから通知が来たので

知っていましたがスルーしてました

 

今朝になって日付絡みのバグ修正のために調べていたら

ドンピシャのサンプルコードを見つけました

 

qiita.com

 

まさにこの地雷を全力で踏み抜いている現象です

let formatter = DateFormatter()
let now = "2017/8/12"
formatter.dateFormat = "yyyy/MM/dd"
formatter.locale = Locale(identifier: "ja_JP")
let date = formatter.date(from: now) 

こんな感じでlocaleにja_JPを指定したんじゃないかと予想します

知見ないとやっちゃいそうな感じがする・・・

 

おそらく西暦2020年が平成2020年もしくは令和2020年として扱われた結果

西暦に変換されて西暦4038年または西暦4008年と表示されたんでしょう

 

en_US_POSIXを指定すべきみたいですが

どの言語にしても日付関連はたくさんのバグを生みますね

 

en_US_POSIXのことはこの記事がいいかな?

qiita.com

 

今日も勉強になった!