存储在客户端的cookie的时区是什么


What is timezone of cookie stored on client's side?

我需要使用 PHP setcookie 函数设置 1 小时后过期的 cookie。我的服务器上的时区设置为 GMT。我应该如何设置 cookie 到期日期,使其在不同客户端的浏览器时区中工作?

据我所知,客户端时间是多少并不重要。PHP 根据 unix 时间码设置过期时间。该时间的任何变化都应驻留在服务器中。

以下是 setcookie() 的 PHP 手册摘录:

到期:

饼干过期的时间。这是一个 Unix 时间戳,因此以纪元以来的秒数表示。换句话说,你很可能会 使用 time() 函数加上之前的秒数进行设置。 您希望它过期。或者你可以使用 mktime()。时间()+60*60*24*30 会将 Cookie 设置为在 30 天后过期。如果设置为 0 或省略,则 Cookie 将在会话结束时过期(当浏览器 关闭)。

PHP 的 setcookie() 函数接受对应于 Unix 时间戳值的整数。如果你的 cookie 应该有 1 小时的生存时间,你可以只使用 time() + 3600 作为该值。 然后,PHP 将创建一个过期时间的 cookie,例如"expires=Fri, 3 Aug 2001 20:47:11 UTC"。它采用UTC(GMT),因此您不必担心客户端浏览器的时区

你可以

尝试使用getTimeZonesetTimeZone看看这里

此外,strtotime 似乎可以检索日期时间的正确格式,然后您可以使用 gmdate 进行转换

假设你使用set cookie。

我可能是错的,但我认为:

您提供过期参数作为 Unix 时间戳,并将时间戳计算为"在一小时内",因此您希望 cookie 在一小时内过期。所以不要关心时区,因为 unix 时间戳是明确的。

然后浏览器的任务是根据 bowser 设置(语言环境、语言等)翻译日期中的 unix 时间戳