【发布时间】:2015-01-11 17:57:03
【问题描述】:
当内容被请求为application/xml 时,如何控制DateTime 的输出格式?以下适用于 JSON:
JsonMediaTypeFormatter jsonFormatter = config.Formatters.JsonFormatter;
jsonFormatter.SerializerSettings = new JsonSerializerSettings {
DateFormatString = "yyyy-MM-dd" };
XmlMediaTypeFormatter 的等价物是什么?
更新: 从语义上讲,我的数据没有时间信息。从技术上讲,我想 a) 最小化有效负载 b) 简化消耗(无需在客户端处理/格式化)c) 无论要求的格式如何,都能获得一致的响应。
【问题讨论】:
-
你想把它改成什么,为什么? XML 已经有明确定义的日期和时间格式 (ISO-8601) - 您应该坚持使用它。不要忘记这是机器可读,而不是针对最终用户。 (JSON 也是如此——我强烈反对在 JSON 中使用
MM/dd/yyyy。) -
不幸的是,底层数据库使用 datetime 数据类型存储日期。 C# 也没有仅日期类型,对吧?我的前端只需要日期部分。
-
为什么这意味着您需要在 XML 中使用非标准格式?这是不合逻辑的,IMO。 (顺便说一句,您可能想查看我的Noda Time 项目以了解更多类型的日期/时间类型,包括“仅日期”-但这不会改变使用美国是否是个好主意-以 XML 为中心的日期格式...)
-
对不起,如果我让自己不清楚。我的观点是不要使用美国日期格式。关键是在响应中省略 C#
DateTime类型的时间部分。我为 JSON 制作了它,并希望在 XML 中获得相同的结果以实现一致性。 -
对,那你要使用
yyyy-MM-dd吗?您强制 JSON 使用以美国为中心的格式的代码示例令人困惑。我怀疑可能有一个 XML 序列化属性专门说“这只是一个日期”,此时您不需要指定格式...
标签: .net datetime serialization asp.net-web-api xml-serialization