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

时间:2012-04-19 12:58:26

标签: php cookies timezone

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

4 个答案:

答案 0 :(得分:9)

我可以告诉它近乎客户端的时间并不重要。 PHP根据unix时间码设置过期时间。该时间的任何变化都应该与服务器一起存在。

以下是来自PHP manual的setcookie()的摘录:

  

到期:

     

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

答案 1 :(得分:5)

PHP的setcookie()函数接受与Unix时间戳值对应的整数。如果您的cookie应该有1小时的生存时间,那么您可以使用time()+ 3600来获取该值。然后,PHP将创建一个过期时间为“expires = Fri,2001年8月3日20:47:11 UTC”的cookie。它是UTC(GMT),因此您不必担心客户端浏览器的时区

答案 2 :(得分:0)

您可以尝试使用getTimeZonesetTimeZone 看看here

同样strtotime似乎可以正确恢复日期时间格式,然后您可以使用gmdate进行转换

答案 3 :(得分:0)

假设你使用set cookie。

我可能错了,但我想:

您将expire参数作为Unix时间戳提供,并将时间戳计算为“以小时为单位”,因此您希望cookie在一小时后到期。所以不要关心时区,因为unix时间戳是明确的。

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