C#DateFormatString用于GMT偏移量

时间:2019-06-11 15:30:11

标签: c# datetime json.net format

我需要使用DateTime数据来使用一些类似于以下格式的JSON:

Tue Jun 11 00:00:00 +0100 2019

我相信+0100是格林尼治标准时间的偏移量(+0100是英国夏令时)。我正在使用C#newtonsofts JsonConvert反序列化它。例如

List<Staff_Extra> staff_Extras = JsonConvert.DeserializeObject<List<Staff_Extra>>(jStaffExtra.ToString(), new JsonSerializerSettings
{
    DateFormatString = "ddd MMM dd hh:mm:ss yyyy" 
});

由于偏移量,这将引发异常。 DateFormatString应该如何考虑此偏移量?

示例代码https://www.newtonsoft.com/json/help/html/DeserializeDateFormatString.htm

2 个答案:

答案 0 :(得分:1)

为时区令牌部分添加zzz。可以找到其他令牌here

答案 1 :(得分:0)

  • 如果要以转换为本地时间的方式读取该时间,请使用

    DateTime.ParseExact(test, "ddd MMM dd hh:mm:ss zzz yyyy", null);

    这将以6/10/2019 5:00:00 PM的时间返回(我在美国文化中属于MDT)

  • 如果您想将该时间作为当地时间读取并保留原始时区,请使用

    DateTimeOffset.ParseExact(test, "ddd MMM dd hh:mm:ss zzz yyyy", null);

    这将返回该时间为6/11/2019 12:00:00 AM +01:00(保留时区偏移量)

  • 如果要将其读取为当地时间,而忽略时区偏移量,请使用:

    DateTimeOffset.ParseExact(test, "ddd MMM dd hh:mm:ss zzz yyyy", null).DateTime;

    这将以6/11/2019 12:00:00 AM

  • 的形式返回该时间