C# 如何在用户本地时间中设置cookie过期时间?

C# 如何在用户本地时间中设置cookie过期时间?,c#,cookies,C#,Cookies,我想要一块饼干在10分钟内完全过期(只是为了争论) 如果我使用Expires=DateTime.Now.AddMinutes(30)并且用户比我晚3小时,cookie将在收到后立即过期(是否正确?) 如何设置过期时间,使其对用户是本地的 当然,我可以使用JavaScript将信息与请求一起发送,或者使用某种JS库在客户端创建cookie,或者保留用户配置文件并向用户询问时区,但我正在寻找一个懒人解决方案。cookie过期日期将以GMT时间结束,因此,您的代码将简单地工作。相关线程:似乎设置Coo

我想要一块饼干在10分钟内完全过期(只是为了争论)

如果我使用
Expires=DateTime.Now.AddMinutes(30)
并且用户比我晚3小时,cookie将在收到后立即过期(是否正确?)

如何设置过期时间,使其对用户是本地的


当然,我可以使用JavaScript将信息与请求一起发送,或者使用某种JS库在客户端创建cookie,或者保留用户配置文件并向用户询问时区,但我正在寻找一个懒人解决方案。

cookie过期日期将以GMT时间结束,因此,您的代码将简单地工作。

相关线程:似乎设置Cookie
expires
字段格式为
Wdy,DD Mon YY HH:MM:SS GMT
,这使得我的问题有问题。Cookie过期不是特定于本地时间的,而是GMT。请参阅我对该问题的评论。Cookies的过期时间是以GMT表示的,还是我遗漏了什么?@user93422-查看我的更新答案。看起来您可以将cookie设置为本地服务器时间。即使您使用
DateTime。现在它将使用当前(服务器)时区将cookie转换为UTC。所以不管你怎么做,你都会得到正确的过期时间。这里发生了奇迹:
dt=dt.ToUniversalTime()-如果不是UTC,则会调整时间。(
HttpUtility::FormatHttpCookieDateTime
)“如果DateTimeKind属性设置为Unspecified,则假定Utc”-我认为DateTime.Kind.Unspecified假定为本地。