這裏有一些片段的,我有工作在C#的設置:商店UTC日期在Visual Studio中設置文件
Settings.settings
<Setting Name="SomeSettingUtcDate" Type="System.DateTime" Scope="Application">
<Value Profile="(Default)">10/27/2014 12:00:00</Value>
</Setting>
Settings.Designer.cs
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("11/6/2014 12:00:00")]
public global::System.DateTime SomeSettingUtcDate {
get {
return ((global::System.DateTime)(this["SomeSettingUtcDate"]));
}
}
正如你可以看到的名字,我希望日期在UTC時間。在我的用例中,接受日期的方法將通過檢查DateTime.Kind
屬性並確保它是DateTimeKind.Utc
來檢查傳遞給它的日期是否爲爲 UTC。但是,致電Settings.Default.SomeSettingUtcDate
返回的日期不會有此屬性集。
爲了滿足被調用方法中的檢查,創建一個新的DateTime
對象與UTC類型集合似乎是一種破解,因爲大多數使用UTC日期的點都是這樣,所以每個人都會同意,實際發生,並促使人們思考時間,並第一次做對。如果我們從設置文件中獲取任何舊日期值,並假設它是UTC,那麼在我看來,我們可能不會檢查Kind
是Utc
,因爲它不必是那樣設置文件。
因爲我的方法可以用另一個日期(不是來自設置文件中的一個)調用,所以它仍然有檢查UTC類型的價值,所以我怎樣才能縮小這個差距,讓我和其他開發者更容易使用存儲在設置文件中的日期「陷入成功之坑」?
有沒有一種方法可以通過不同的日期時間對象來指定UTC(所以至少日期被假定爲UTC,並且在編輯設置時在GUI中可見地顯示這個指示符,例如它是例如UtcDateTime),還是在日期字符串本身中指定UTC?
爲了用作DateTime,不需要將'DateTimeOffset'作爲偏移量應用於'DateTime'嗎? – ErikE 2014-11-06 22:56:21
@ErikE,不,DateTimeOffset包含日期和時區。你可以像使用DateTime一樣使用它;它具有像Now和UtcNow這樣的屬性,並且可以將屬性轉換爲DateTime(LocalDateTime,UtcDateTime) – 2014-11-06 22:59:15
我把它與TimeSpan混淆了。謝謝,這聽起來很完美*。 – ErikE 2014-11-06 23:18:26