首页 > 解决方案 > 在解析日期上增加了一个小时

问题描述

我将此发布到 ASP.net Core 操作...

{
   "Start":"2018-09-30T00:00:00+00:00",
   "Finish":"2018-10-01T00:00:00+00:00"
}

它模型绑定到两个Date?属性,但值是相同的日期,但时间是凌晨 1 点。

为什么会这样?它似乎只在出现“+00:00”时才会这样做,所以我的猜测是这代表格林威治时间,服务器目前在夏季时间为 +1。

标签: asp.net-core

解决方案


我基本上使用了这个答案...... https://stackoverflow.com/a/38276403/221683

此自定义格式化程序不包括日期字符串中的时区。

public class DateTimeConverter : DateTimeConverterBase
{
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }

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

var serializedItem = JsonConvert.SerializeObject(item, new DateTimeConverter());

推荐阅读