C# 如何重新配置JsonFormatter序列化日期的方式?
看起来Asp.NETMVCWebAPI使用了一种默认的序列化格式,超过三位数表示一秒钟的分数 如果使用AngularJS格式化的日期的小数位数超过三位数,则无法正确显示日期 以下是我设置序列化的方法:C# 如何重新配置JsonFormatter序列化日期的方式?,c#,json,C#,Json,看起来Asp.NETMVCWebAPI使用了一种默认的序列化格式,超过三位数表示一秒钟的分数 如果使用AngularJS格式化的日期的小数位数超过三位数,则无法正确显示日期 以下是我设置序列化的方法: config.Formatters.Remove(config.Formatters.XmlFormatter); var json = config.Formatters.JsonFormatter; json.SerializerSettings.ContractResolver = new
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
虽然我自己还没有尝试过,但请检查一下
这篇博客文章提到了在
KnockoutJS
中使用日期值,但我希望这将为您提供一条线索,让它在AngularJS
中也能正常工作。虽然我自己还没有尝试过,请查看
博客文章提到了在
KnockoutJS
中使用日期值,但我希望这将为您提供一个线索,让它在AngularJS
中工作。您可以创建这样的自定义转换器
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());
您可以像这样创建自定义转换器
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());
Javascript允许使用小数,正如ISO8601格式中允许的那样。你在Angular做了什么具体的事情会阻止它接受它们吗?您可以显示代码,将字符串解析为angular格式的日期吗?Javascript允许使用小数,正如ISO8601格式所允许的那样。你在Angular做了什么具体的事情会阻止它接受它们吗?你能显示你用angular将字符串解析成日期的代码吗?看起来不错,但要注意
.Kind
。如果DateTime.Kind
是DateTimeKind.Utc
,那么它的末尾应该有Z
。是的,我同意你的看法。如果OP认为确实需要定制转换器解决方案,则OP可能需要在此基础上进行构建,并使其更加灵活:)。看起来不错,但要注意.Kind
。如果DateTime.Kind
是DateTimeKind.Utc
,那么它的末尾应该有Z
。是的,我同意你的看法。如果OP认为确实需要定制转换器解决方案,则OP可能需要在此基础上进行构建,并使其更加灵活:)。