|
最近一直在負責公司內部框架的升級工作,今天對一個小問題進行了重新思考——時間的處理。具體來說,是如何有效地進行時間的處理以提供對跨時區的支持。對于一個分布式的應用來說,倘若客戶端和服務端部署與不同的地區,在對時間進行處理的時候,就需要考慮時區的問題。以我們現在的一個項目為例,這是一個為澳大利亞某機構開發的一個基于Smart Client應用(Windows Form客戶端),服務器部署于墨爾本,應用的最終用戶可能需要跨越不同的州。澳洲地廣人稀,不同的州也有可能會跨越不同的時區。假設數據庫并不支持對時區的區分,服務端需要對針對客戶端所在的時區對時間進行相應的處理。不過,對該問題解決方案的介紹我會放在后續的文章中,在這里我們先來介紹一些基礎性的內容——談談我們熟悉的System.DateTime類型。
一、你是否知道System.DateTimeKind?
System.DateTime類型,我們再熟悉不過。順便說一下,這個類型不是class,而是一個struct,換言之它是值類型,而不是引用類型。DateTime處理包含我們熟悉的年、月、日、時、分、秒和毫秒等基本屬性之外,還具有一個重要的表示時間類型(Kind)的屬性:Kind。該屬性的類型為System.DateTimeKind枚舉。DateTimeKind定義如下,它具有三個枚舉值:Unspecified、Utc和Local。后兩個分別表示UTC(格林威治時間)和本地時間。Unspecified顧名思義,就是尚未指定具體類型,這是默認值。
1: [Serializable, ComVisible(true)]
2: public enum DateTimeKind
3: {
4: Unspecified,
5: Utc,
6: Local
7: }
NET技術:System.DateTime詳解,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。