[英]Convert all dates in PHP to local time
运行我的PHP脚本的服务器设置为UTC。 我似乎无法找出一种将所有日期设置为浏览器时区的方法。 使用PHP的date()
函数格式化所有显示的date()
。
我知道通过JavaScript的getTimezoneOffset()
函数,可以获得浏览器的当前UTC偏移量(以我为例,为-4)。 如何告诉PHP使用此偏移量? 我可以使用date_default_timezone_set()
,但是如何将偏移量(例如-4)转换为时区字符串,例如America / New_York?
注意:服务器正在运行PHP 5.1.6(没有DateTime类),并且我正在使用CodeIgniter。
因为Javascript是基于客户端的,而PHP是基于服务器的,所以它们将无法通信。 要告诉服务器浏览器时间,您可能需要通过Ajax从客户端发送信息,并发布浏览器时间。 然后,目标PHP脚本应适当地处理/输出此内容。 另一种(钝的)选择是尝试根据IP对用户进行地理位置定位,然后估算该位置的正确时间,但是这样做效率不高。
“我知道我可以使用date_default_timezone_set(),但是如何将偏移量(例如-4)转换为时区字符串,例如America / New_York?”
只需查看与该功能的文档相关的注释。 评论#99006为您完成工作。 您只需要从用户那里获取时区偏移量即可。
根据上面的评论-您可以使用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']));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.