2011-01-31 106 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