0

似乎 Asp.Net MVC Web API 使用了默认的序列化格式,在几分之一秒内超过三位数。

当使用 AngularJS 格式化超过三位数的秒数时,日期无法正确显示

这是我设置序列化的方式:

config.Formatters.Remove(config.Formatters.XmlFormatter);
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

当前日期显示为:

yyyy-MM-ddTHH:mm:ss.SSSSZ

有没有办法可以将日期默认序列化格式配置为仅显示:

yyyy-MM-ddTHH:mm:ss
4

2 回答 2

2

您可以像这样创建自定义转换器。

public class MyDateTimeConverter : DateTimeConverterBase
{
        public override void WriteJson(JsonWriter writer,
                                           object value,
                                                  JsonSerializer serializer)
        {
            writer.WriteValue(((DateTime)value)
                               .ToString("yyyy-MM-ddTHH:mm:ss"));
        }
}

然后,配置它以供 JSON.NET 使用。

var json = config.Formatters.JsonFormatter;
json.SerializerSettings.Converters.Add(new MyDateTimeConverter());
于 2013-07-09T17:14:26.570 回答
1

虽然我自己没有尝试过,但请查看JSON Dates are different in ASP.NET MVC and Web API

博客条目提到使用 中的日期值KnockoutJS,但我希望这将为您提供指导,使其也能正常工作AngularJS

于 2013-07-09T16:57:11.827 回答