2013-04-11 156 views

回答

3

然而,TryParseExact产生下午10:30在当地时间

不,不。除非你告诉它。默认情况下,除非模式中存在偏移量的任何指示,否则解析方法将返回DateTime值,Kind的值为Unspecified - 由于没有指定信息,因此这是完全合适的。如果你只是把它转换成一个字符串,它会认为它实际上是一个本地时间,但这不是价值本身所说的。您需要了解DateTime三种 - 这是broken model IMO,但这就是我们在BCL中所拥有的。

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

或者,您可以使用我的Noda Time项目,该项目区分不同的逻辑类型,而更清楚。你会解析为LocalTime,然后决定加入哪个LocalDate以生成LocalDateTime,然后您可以使用“America/Los_Angeles”时区(或Windows等价物;选择是您的)将其转换为ZonedDateTime, 。在执行转换时,如果给定的本地时间由于夏令时转换而无效或不明确,您可以指定想要发生的情况。

+0

你是对的。它没有说明。我已经把它的输出添加到了DateTime.Today中,它必须给它LocalTime类型...我的错误。 – 2013-04-11 16:00:14

+1

@daveL:我仍然会推荐使用野田时间,请注意:) – 2013-04-11 16:04:29