2008-09-17 70 views
2

好的 - 有點兒拗口。所以我有這個問題 - 我需要存儲到期日期,其中只有日期部分是必需的,我不想任何時區轉換。例如,如果我的期限設置爲「2008年3月8日」,我希望將該值返回給任何客戶 - 無論其時區是什麼。 將它作爲DateTime進行遠程處理的問題在於,它將以「2008年3月8日00:00」的形式進行存儲/發送,這意味着對於從我的任何時區連接的客戶端,它將被轉換並因此翻轉爲「2008年3月7日」 任何建議乾淨地處理這種情況?很明顯,將它作爲字符串發送會起作用。還要別的嗎 ? 感謝, 伊恩處理.Net中的時區僅限日期日期

回答

0

您可以創建一個struct日期,提供了訪問到你想要的細節/需要,如:

public struct Date 
{ 
    public int Month; //or string instead of int 
    public int Day; 
    public int Year; 
} 

這是輕便,靈活,讓您完全控制。

0

你可以把它作爲UTC時間

dateTime1.ToUniversalTime()

0

我想發送的時刻字符串將是最快/最簡單的方法,雖然你可以看看強迫區域設置停止發生時間轉換。

0

爲什麼不將它作爲字符串發送,然後根據需要將其轉換回日期類型?這樣它不會被轉換到不同的時區。把事情簡單化。

編輯:我喜歡結構的想法,允許良好的功能。

0

我過去在應用程序上處理過這個問題的最簡單方法就是將日期作爲字符串以yyyy-mm-dd格式存儲。這是不禮貌的,不會被任何東西自動翻譯。

是的,這是一個痛苦......

1

我不知道你指的是什麼遠程技術,但這是與WCF,只目前支持序列化的DateTime爲XS一個現實問題:日期時間,如果您對時區不感興趣,則不適合僅限日期的值。

.NET 3.5引入了新的DateTimeOffset類型,該類型適用於在時區之間傳輸日期時間,但對日期方案沒有幫助。

理想WCF需要有選擇地支持XS:日期序列化日期的要求在這裏:

http://connect.microsoft.com/wcf/feedback/ViewFeedback.aspx?FeedbackID=349215

1

我不喜歡這樣寫道:當我在記憶日期或存儲在一個文件時,它始終是在UTC中的DateTime中。當我向用戶顯示日期時,它始終是一個字符串。當我在字符串和DateTime之間進行轉換時,我也會進行時區轉換。

這樣我就不必在邏輯中處理時區,只能在演示文稿中處理。