JavaScriptSerializer不能识别日期字符串为DateTime

本文关键字:DateTime 字符串 日期 不能 识别 JavaScriptSerializer | 更新日期: 2023-09-27 18:11:04

这是我的模型:

public class ReportAllMediaDetailsParams
    {
        public int profileID  { get; set; }
        public int organisationID { get; set; }
        public DateTime startDate { get; set; }
        public DateTime endDate { get; set; }
}

这是我的反序列化器:

var serializer = new JavaScriptSerializer();
var reportParams = serializer.Deserialize<ReportAllMediaDetailsParams>(json);

来自json的日期是:

"{'"profileID'":'"41'",'"organisationID'":'"2252'",'"startDate'":'"01/01/1970'",'"endDate'":'"01/01/1970'"}"

JavaScriptSerializer不能识别日期字符串为DateTime

  • 不要使用JavaScriptSerializer,使用Json。净。

  • 不要在JSON中使用特定于语言环境的格式,如MM/dd/yyyydd/MM/yyyy。例如,1/4/2013是否代表四月的第一天?或者是一月的第四天?没有办法知道。

  • 使用ISO8601格式代替。它是文化不变的,所以没有歧义。在ISO格式中,您有2013-01-04,它总是 yyyy-mm-dd,因此没有歧义。例如,完整的日期时间为2013-01-04T05:30:27.123

  • 来自c#,使用DateTime.ToString("o")来获得此格式-或者仅使用Json。使用ISO格式自动序列化DateTimeDateTimeOffset