我应该在HttpCookie.Expires
和HttpCachePolicy.SetExpires
中使用DateTime.Now或DateTime.UtcNow吗?
Cookies are sending 'GMT'时间,但我不知道如果我在GMT + 5中发送DateTime.Now.AddDays(3)
会发生什么。与Expires HTTP header (sec 14.21)相同。
我应该使用什么?
答案 0 :(得分:17)
在这种情况下没关系。
在内部,.SetExpires
做的第一件事是将提供的日期时间转换为UTC,然后再将其设置在cookie上。
请记住,只要你的日期时间使用者正确使用DateTime类,那么两者是相同的 - 只是一个“基线”到UTC而另一个不是:
20110701T14:00:00-1:00 (British Summer Time)
和
20110701T13:00:00+0:00 (UTC)
表示完全相同的日期时间,即UTC时间下午1点。
只要消费者正确地处理了这种情况(看起来好像已经看过反射器),那么它没有任何区别。
如果你把它作为一个时间字符串传递给它,当然,它可能会有所作为,但在这种情况下不会。
您可以使用以下代码查看效果(假设您自己不是UTC - 如果您 - 更改您的设置以进行测试!)。一旦您要求将其转换为UTC,它们都会输出相同的日期时间。
WriteDateTime(DateTime.Now);
WriteDateTime(DateTime.UtcNow);
public static void WriteDateTime(DateTime dateTime)
{
Console.WriteLine(dateTime.ToUniversalTime().ToLongTimeString());
}
答案 1 :(得分:1)
您应该使用DateTime.UtcNow方法,因为这是用于cookie的时间标准。 UTC与GMT等效。
来自MSDN: System.DateTime.UtcNow
获取设置为的DateTime对象 当前的日期和时间 计算机,表示为Coordinated 世界时(UTC)。
有关它们之间的解释,请参阅this。