如何正确反序列化Json DateTimeOffset?

时间:2019-04-05 14:48:05

标签: c# json date json.net deserialization

当我尝试从json反序列化DateTimeOffset时遇到问题。我在这里看到了很多问题,但似乎没人能解决。我在这个日期从杰森那里得到时间:格林尼治标准时间05/04/2019 02:39:33 PM我想将偏移量保持为零。反序列化之后,顺便说一句,我得到的对象具有相同的准确时间(在这种情况下为02:39:33 PM),但带有我的时区(+02:00)。我尝试了两种解决方法,但均未成功:

首先,我尝试设置反序列化器的设置:

JsonSerializerSettings serializerSettings = new JsonSerializerSettings
    {
        DateFormatHandling = DateFormatHandling.IsoDateFormat,
        DateTimeZoneHandling = DateTimeZoneHandling.Utc,
        DateParseHandling = DateParseHandling.DateTimeOffset,
        DateFormatString = "dd/MM/yyyy hh:mm:ss tt 'GMT'"
    };

我也尝试了此转换器:

class DateFormatConverter : IsoDateTimeConverter
{
    public DateFormatConverter(string format)
    {
        DateTimeFormat = format;
        DateTimeStyles = System.Globalization.DateTimeStyles.AssumeUniversal;
    }

所以,我期望这个结果: 05/05/2019 02:39:33 PM +00:00 感谢所有能回答我的事情!

2 个答案:

答案 0 :(得分:2)

也许将DateParseHandling.DateTimeOffset更改为DateParseHandling.None

答案 1 :(得分:0)

我通过更改DateParseHandling = DateParseHandling设法获得了预期的结果。在序列化程序的设置中没有。