2011-01-31 105 views

回答

16

這種情況並不重要。

在內部,.SetExpires所做的第一件事是將您提供的日期時間轉換爲UTC,然後將其設置在cookie上。

請記住,只要你的datetime消費者正確使用DateTime類,那麼這兩個是相同的 - 它只是一個「基線」爲UTC,另一種是沒有:

20110701T14:00:00-1:00 (British Summer Time) 

20110701T13:00:00+0:00 (UTC) 

代表完全相同的日期時間,即下午1點UTC。

只要消費者正確地處理了這個問題(它看起來好像在反射鏡中看過),那麼它就沒有區別。

如果你正在接受這個並且把它作爲一個時間字符串傳遞進去,那麼當然,它可能會有所作爲,但在這種情況下不會。

您可以使用以下代碼查看效果(假設您自己不是UTC - 如果是的話) - 將您的設置更改爲測試!)。一旦您要求將其轉換爲UTC,它們都會輸出相同的日期時間。

WriteDateTime(DateTime.Now); 
WriteDateTime(DateTime.UtcNow); 

public static void WriteDateTime(DateTime dateTime) 
{ 
    Console.WriteLine(dateTime.ToUniversalTime().ToLongTimeString()); 
} 
1

您應該使用DateTime.UtcNow方法,因爲這是用於cookie的時間標準。 UTC等於GMT。

MSDN: System.DateTime.UtcNow

獲取設置爲 這 計算機上的當前日期和時間的DateTime對象,表示爲協調 世界時(UTC)。

請參考this瞭解它們之間的解釋。

+0

我知道。問題是,即使在MSDN頁面中,他們也使用DateTime.Now http://msdn.microsoft.com/en-us/library/system.web.httpcookie.expires.aspx,這就是我的錯誤。我不知道他們是否不在意o如果HttpCookie.Expires已經轉變爲GMT:P – vtortola 2011-01-31 10:54:24

+0

-1 - 我不相信這是正確的 - 它不應該有任何區別,你使用。 – 2011-01-31 11:18:40