我的PHP脚本运行的服务器设置为UTC。我似乎无法找到一种方法来将所有日期设置为浏览器的时区。显示的所有日期都使用PHP的date()
函数进行格式化。
我知道通过JavaScript的getTimezoneOffset()
函数,我可以获得浏览器的当前UTC偏移量(在我的情况下为-4)。如何告诉PHP使用此偏移量?我可以使用date_default_timezone_set()
,但如何将偏移量(比如-4)转换为时区字符串,比如America / New_York?
注意:服务器正在运行PHP 5.1.6(没有DateTime类),我正在使用CodeIgniter。
答案 0 :(得分:0)
因为Javascript是基于客户端的,而PHP是基于服务器的,所以它们不会进行通信。要告诉服务器浏览器时间,您需要从客户端发送信息,可能通过Ajax发布浏览器时间。然后,目标PHP脚本应该适当地处理/输出它。另一个(钝)选项是尝试基于IP对用户进行地理定位,然后猜测该位置的正确时间 - 但是这对于此目的而言效率低。
答案 1 :(得分:0)
“我知道我可以使用date_default_timezone_set(),但是如何将偏移量(比如-4)转换为时区字符串,比如America / New_York?”
只需查看与该功能文档相关的注释即可。评论#99006可以帮助您完成工作。您只需要从用户那里获得时区偏移量。
答案 2 :(得分:0)
根据上面的评论,您可以使用Cookie ...:
使用Javascript:
var today = new Date();
function SetCookie(cookieName,cookieValue,nDays) {
var expire = new Date();
if (nDays==null || nDays==0) nDays=1;
expire.setTime(today.getTime() + 3600000*24*nDays);
document.cookie = cookieName+"="+escape(cookieValue)
+ ";expires="+expire.toGMTString();
}
SetCookie("datecookie", today, 30);
window.location.href=window.location.href
PHP:
echo date("m d Y", strtotime($_COOKIE['datecookie']));