C#从json反序列化“ 2019/02/13 05:00 PST”到UTC DateTime

时间:2019-06-16 19:53:20

标签: c# json timezone deserialization utc

我正在使用外部API,该API以“ 2019/02/13 05:00 PST”格式返回包含日期信息的json响应。当合同解析器尝试将字符串转换为DateTime时,就会出现问题。

我正在使用我们.NetCore 2.2的环境

我无法解决问题。

我发现的最佳解决方案是:  DateTime.Parse(“ 2019/02/13 05:00 PST” .Replace(“ PST”,“ +2”))

但这似乎并不是解决问题的好方法。

感谢您提供的所有帮助

1 个答案:

答案 0 :(得分:0)

没有正确的方法。时区的缩写不是唯一的。例如CST:

- China Standard Time (UTC+8)
- Central Standard Time (UTC-6)
- Cuba Standard Time (UTC-5)

因此,如果您的外部API返回的内容类似

"2019/02/13 05:00 CST"

您期望什么时区?

如果您100%确保API仅返回美国时区,则可以仅针对美国时区缩写编写解析器。并以与您相同的方式替换它们。

但是:

  1. 您的示例看起来很奇怪。 PST的偏移量为-8,而不是+2。

  2. 潜在地,即使美国政府决定更改任何时区的偏移量,您的代码也可能即使在美国也无法正常工作。