我们的前端只想要一个日期。我的理解是JSON.NET和Web Api的行业标准是ISO8601。可以在遵循ISO 8601标准的情况下仅从Web Api返回日期部分,或者将JSON对象的date属性(dateOfBirth)为了符合ISO 8601标准,时间部分必须全为零吗?
答案 0 :(得分:2)
ISO 8601是指定许多不同格式的标准。第4.1.2节涵盖日期,第4.2.2节涵盖一天中的时间,而第4.3节涵盖日期和一天中的时间。规范还为每个规范定义了“基本格式”和“扩展格式”。
一些基本格式的示例:
20190611
140000
20190611T140000
扩展格式的一些示例:
2019-06-11
14:00:00
2019-06-11T14:00:00
一天中的时间也会有所不同,它们会为UTC添加Z
或与UTC的特定偏移量,例如-07:00
。 (这些不适用于仅日期的表单。)
因此,要直接回答您的问题,是的,您只能输入日期。只要您使用上面显示的任一仅日期形式,它仍然符合ISO 8601。 (扩展形式通常用于JSON响应。)
顺便说一句,这不仅是一种选择,还是一种最佳实践。仅日期值(例如生日和其他周年纪念日)不应附加时间-即使全为零。这样做会扭曲其含义。
也就是说,要注意一些陷阱:
Date
对象(通过ECMAScript标准)与ISO 8601不同,并且将仅日期值解析为好像位于UTC午夜而不是当地时间午夜。因此,如果您要从网页调用API,则可能需要自己解析值,使用库或将它们保留为字符串而不是Date
对象。如果必须将仅日期值解析为日期时间数据类型,则避免这些问题的一种方法是分配正午(12:00)而不是午夜(00:00)。
此外,您可能需要确保ISO 8601确实是您需要遵守的标准。许多人在实际使用RFC 3339时说ISO 8601。 RFC 3339主要符合ISO 8601,但仅定义了日期+时间+偏移量配置文件。因此,它适合时间戳记,而不适合整个日期。