【问题标题】:C# DateFormatString for GMT offsetGMT 偏移量的 C# DateFormatString
【发布时间】:2019-06-11 15:30:11
【问题描述】:

我需要使用类似于以下格式的带有DateTime 数据的 JSON:

Tue Jun 11 00:00:00 +0100 2019

我相信 +0100 是 GMT 偏移量(+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

【问题讨论】:

  • 添加zzz作为时区令牌部分?
  • zzz @VidmantasBlazevicius 已经解决了这个问题!谢谢!
  • @sbmobile 不客气,我已将其添加为答案。
  • 小心。 hh 是 12 小时制。您可能希望 HH 使用 24 小时制。

标签: c# datetime json.net format


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    • 如果您想以转换为本地时间的形式读取该时间,请使用

      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

    【讨论】:

      猜你喜欢
      • 2013-03-12
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多