2010-03-10 84 views
-1

我需要從web服務返回服務器時間。我有以下代碼:.NET webservice datetime.now - 時區

<WebMethod()> _ 
Public Function GetDate() As DateTime 
     Return DateTime.Now 

End Function 

代碼總是返回基於連接客戶端的時區(如果我更改時區,更新時間web服務的回報,而不是本地服務器時間)時間。我該如何解決這個問題?

回答

0

服務器實際發送的日期時間在其本地設置時區。客戶端可能會以不同的方式解釋它(基於本地設置)。在服務器上使用UTC時間更安全,或使用DateTimeOffset提供時區信息。

0

試試這個:

DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc); 
+0

在沒有UTC偏移量0的所有時區中,這不會不正確嗎?這將生成Kind == Utc和本地時間的DateTime。這將被序列化爲utc偏移量爲0的本地時間。不是很好。 – FkYkko 2010-04-06 12:36:06

0

你需要總是返回UTC時間。這樣你總是知道它不是特定的時區。

<WebMethod()> _ 
Public Function GetDate() As DateTime 
     Return DateTime.Now.ToUniversalTime() 
End Function