繁体   English   中英

将PHP中的所有日期转换为本地时间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM