0

这是昨天回答的问题的后续内容..

将 12 小时时间字符串转换为 DateTime 对象

xml 提要中的那些时间是 EST(谁做的?),但我们的时区是 BST。

所以晚上 10:30 是 02:30 AM UTC 或 03:30 AM BST

但是,TryParseExact 在本地时间产生 10:30PM(因为没有时区信息,这是可以预期的)

所以这个问题;如何将该时间解析为 UTC 上午 02:30 而不是 BST 晚上 10:30?

4

1 回答 1

3

但是,TryParseExact 产生当地时间晚上 10:30

不,它没有。除非你告诉它。默认情况下,除非模式中有任何偏移指示,否则解析方法将返回DateTime带有Kindof 的值Unspecified- 这是完全合适的,因为没有指定任何信息。如果您只是将其转换为字符串,它将假定它实际上是本地时间,但这不是值本身所说的。您需要了解这三种DateTime- 这是一个损坏的模型 IMO,但这就是我们在 BCL 中得到的。

您可以将其传递给适当TimeZoneInfo的应用特定时区并获得适当的DateTimeOffset,尽管随后由您来记住所涉及的实际时区。(偏移量与时区不同。)

或者,您可以使用我的Noda Time项目,它可以更清楚地区分不同的逻辑类型。您将解析为 a LocalTime,然后决定与哪个LocalDate连接以生成LocalDateTime,然后您可以ZonedDateTime使用“America/Los_Angeles”时区(或 Windows 等效时区;选择权在您)将其转换为 a 。在执行该转换时,您将指定如果给定的本地时间由于夏令时转换而无效或不明确,您希望发生什么。

于 2013-04-11T15:54:10.833 回答