datetime
Swift

DateFormatを書き間違えて画面に何も表示されなくなった話


起きた事

開発中のアプリのホームに何も表示されなくなった。

ホームでは、今月と翌月の予定を表示するのでstartDateとendDateを指定してAPIリクエストを送っていた。

レスポンスが0件だったのでサーバの問題かなと思ったけど、どうもリクエストのパラメータがおかしいようだ。

{

"start_date" : "2019-12-30",
"end_date" : "2019-01-31",
}

今日は31日なので、end_dateは正しい。

が、start_dateが1年先の12/30になっている。

startDate.toFormat("YYYY-MM-dd")

> 2019-12-30

なんかおかしそう。2018-12-30になっていて欲しい。


結論

YYYY-MM-ddではなく、yyyy-MM-ddを使わないとだめ

ちらっと調べた感じYYYY

ある年における「最初の木曜日を含む週が、その年の第1週である」というルールで年(西暦)を出力。

例えば 2015/1/1 は木曜日なのでその週の日は日曜日~土曜日まで全て2015年の第1週という解釈になり、 2014/12/28(日曜)~2014/12/31(水曜) の時に YYYY を使うと 2015 を返します。

引用:http://d.hatena.ne.jp/nakamura001/20150102/1420213850

つまり、

スクリーンショット 2018-12-31 6.00.10.png

こんな感じで、該当年の最初の木曜日が含まれている週を全部該当年にするという事。(上の図だと30,31が2019年)

勉強になった、年末こわこわ事件でした。