Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何重新配置JsonFormatter序列化日期的方式?_C#_Json - Fatal编程技术网

C# 如何重新配置JsonFormatter序列化日期的方式?

C# 如何重新配置JsonFormatter序列化日期的方式?,c#,json,C#,Json,看起来Asp.NETMVCWebAPI使用了一种默认的序列化格式,超过三位数表示一秒钟的分数 如果使用AngularJS格式化的日期的小数位数超过三位数,则无法正确显示日期 以下是我设置序列化的方法: config.Formatters.Remove(config.Formatters.XmlFormatter); var json = config.Formatters.JsonFormatter; json.SerializerSettings.ContractResolver = new

看起来Asp.NETMVCWebAPI使用了一种默认的序列化格式,超过三位数表示一秒钟的分数

如果使用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

虽然我自己还没有尝试过,但请检查一下


这篇博客文章提到了在
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可能需要在此基础上进行构建,并使其更加灵活:)。