在JsonConvert.SerializeObject中更改DateTime格式

时间:2018-09-20 09:31:27

标签: c# .net json.net

我有一个名为“数据”的类,它具有“名称”,“日期”和“值”。 “日期”属性是DateTime值。

现在,我有一个名为“ DataList”的List<Data>,并且在其上使用了JsonConvert函数,如:

Newtonsoft.Json.JsonConvert.SerializeObject(DataList)

但是现在日期显示为YYYY-MM-DDTHH-mm-SS。 我可以在JsonConvert完成之前以某种方式更改此格式吗?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,则可以通过将格式指定为SerializeObject方法的参数来实现您要执行的操作。

类似这样的东西:

var dt = DateTime.Now;
JsonSerializerSettings formatSettings = new JsonSerializerSettings
{
    DateFormatString = "dd/MM/yyyy"
};
var json = JsonConvert.SerializeObject(dt, formatSettings);

有关此操作的示例,请参见此页:https://www.newtonsoft.com/json/help/html/DatesInJSON.htm

答案 1 :(得分:0)

不要这样做。

序列化的日期/时间格式为ISO8601。选择该字符串是为了使符合该标准的每个系统都可以正确解释该字符串。

像这样的字符串

  

2018-09-20T09:23:46 + 00:00

可读性强,任何使用默认设置的系统均可正确反序列化。

在维护系统,跨设备或跨文化的过程中偏离这些标准会给您带来严重的问题。