2013-04-11 158 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