あるWeb APIの設計をレビューしているときに、日付のプロパティに対して
date: YYYY年MM月DD日 time: hh時mm分
とフォーマットされた文字列で返すと記載されているのに気付いた
フロントエンド目線だとこのようにフォーマットされた状態だと厳しい
例えば、ある画面ではYYYY/MM/DD hh:mm
と表示したいかもしれないがそれが簡単にはできなくなる(嫌な予感しかしない)
ということで指摘しようと思ったが、では何に準拠しておくのがよいのかがパッと出てこなかったので調べた
Web API: Good Parts(3.4.3)では
- 作者:水野 貴明
- 発売日: 2014/11/21
- メディア: 大型本
広く使われることを目的とするならばRFC3339
形式がよいとしている
理由は、RFC3339形式は年から秒までを省略せずにすべて含めたもので、かつ、曜日を別表現にするなどの冗長な表現も排除されているため
タイムゾーンに関して、どうやらDBに保存されている日時が日本時間であるためそのまま使うなら末尾に+09:00
をつける必要がある
以上から下のフォーマットがよさそう
datetime: YYYY-MM-DDThh:mm:ss+09:00
他参考
https://opensource.zalando.com/restful-api-guidelines/#126
https://wiki.suikawiki.org/n/RFC%203339%E3%81%AE%E6%97%A5%E4%BB%98%E5%BD%A2%E5%BC%8F