我需要從web服務返回服務器時間。我有以下代碼:.NET webservice datetime.now - 時區
<WebMethod()> _
Public Function GetDate() As DateTime
Return DateTime.Now
End Function
代碼總是返回基於連接客戶端的時區(如果我更改時區,更新時間web服務的回報,而不是本地服務器時間)時間。我該如何解決這個問題?
我需要從web服務返回服務器時間。我有以下代碼:.NET webservice datetime.now - 時區
<WebMethod()> _
Public Function GetDate() As DateTime
Return DateTime.Now
End Function
代碼總是返回基於連接客戶端的時區(如果我更改時區,更新時間web服務的回報,而不是本地服務器時間)時間。我該如何解決這個問題?
服務器實際發送的日期時間在其本地設置時區。客戶端可能會以不同的方式解釋它(基於本地設置)。在服務器上使用UTC時間更安全,或使用DateTimeOffset提供時區信息。
對於這裏的人來說並不緊急,所以用這種方式標記問題是沒有用的。
看看Creating a DateTime in a specific Time Zone in c# fx 3.5這是第一個谷歌的結果......
試試這個:
DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc);
你需要總是返回UTC時間。這樣你總是知道它不是特定的時區。
<WebMethod()> _
Public Function GetDate() As DateTime
Return DateTime.Now.ToUniversalTime()
End Function
在沒有UTC偏移量0的所有時區中,這不會不正確嗎?這將生成Kind == Utc和本地時間的DateTime。這將被序列化爲utc偏移量爲0的本地時間。不是很好。 – FkYkko 2010-04-06 12:36:06