我用ASP.NET Web API 2编写了一个接收日期的REST端点。后端系统没有UTC时间或DST的概念,存储在数据库中的日期只是英国的日期和时间。
然而,馈送端点的网站在发送到端点的数据中包括UTC偏移值(例如,日期看起来像“1939-01-08T00:00:00 + 01:00”)。这种情况发生在冬季进入夏季日期,反之亦然(因为夏令时调整)。
我是否可以将JSON解串器设置为完全忽略那些UTC偏移值?我查看了文档here和示例here,并尝试了所有不同的枚举选项,但它们都没有给我我正在寻找的行为。
答案 0 :(得分:0)
如果日期解析没有按照您想要的方式工作,您可以将其关闭并使用自定义JsonConverter来处理日期。
这是一个应该完成工作的转换器:
fragmentManager.beginTransaction().add(R.id.fragment_container, editStudent, "editStudent" ).commit();
要将此转换器安装到Web API管道中,请在class OffsetIgnoringDateConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(DateTime) || objectType == typeof(DateTime?));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
string rawDate = (string)reader.Value;
if (rawDate == null) return existingValue;
if (rawDate.Length > 19) rawDate = rawDate.Substring(0, 19);
DateTime date = DateTime.ParseExact(rawDate, "yyyy'-'MM'-'dd'T'HH':'mm':'ss",
CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal);
return date;
}
public override bool CanWrite
{
get { return false; }
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
中的Application_Start()
方法中添加以下内容:
Global.asax
这是一个演示(控制台应用):https://dotnetfiddle.net/kt9pFl