如何在服务器上保持本地时间(使用 JS 和 PHP)?
Posted
技术标签:
【中文标题】如何在服务器上保持本地时间(使用 JS 和 PHP)?【英文标题】:How to keep local time on the server (using JS and PHP)? 【发布时间】:2012-11-16 22:42:38 【问题描述】:我正在尝试制作一个像 *** 那样的评论系统。我面临的问题是当我的服务器运行 php 和我的 mysql 数据库将时间存储在不同的时区时,如何在本地时间(即 2 小时前)向用户显示他们和其他 cmets 的时间用户。
我知道要在服务器上保留本地时间,我必须使用这样的代码(将欧洲/苏黎世换成 wherever you are in the world):
$myTimezone='Europe/Zurich';
date_default_timezone_set($myTimezone);
我也明白要将本地 $myTimezone
发送到我的服务器,我需要以这样的方式使用 javascript (adapted from here) 获取本地时间:
var localDate = new Date(),
offset= -localDate.getTimezoneOffset()/60; //can send this 'offset' variable via $.ajax to the server
我的问题不是在我的每个 PHP 脚本上都写 date_default_timezone_set($myTimezone);
来吐出时间(最终更多的地方不仅仅是评论系统),是否有可能以某种方式在我的服务器上全局设置本地时间?
【问题讨论】:
不要在意客户端时间,用户很容易因为各种原因设置错误的时间。 为什么不直接使用php的time()?它为您提供自纪元(1970 年 1 月 1 日)以来的秒数 - 通用时间,然后只需通过 javascript 将其格式化为用户端的本地时区(日期(使用 php 通过 time() 完成所有工作 - 自纪元 [1970 年 1 月 1 日] 以来的秒数 - 函数。这样所有用户的时间都与服务器同步。
然后将这个时间发送给用户,并从那里设置 javascript 格式:
var dt = new Date(time_returned_from_php * 1000); //Multiplied by 1000 since javascript uses milliseconds
然后你可以使用 javascripts .toLocalString() 让用户的格式在他们的本地。
所以只是为了回答这个问题,我不将本地时间保存在服务器上。客户端和服务器时间不同步。 PHP 做它的事情,然后 JS 进来纠正它到本地时间。
只是为了好玩,您可以使用这个非常漂亮的JS plugin, timeago, 来格式化时间,使用熟悉的 ***/Facebook 样式(2 小时前...、几秒钟前等)
【讨论】:
以上是关于如何在服务器上保持本地时间(使用 JS 和 PHP)?的主要内容,如果未能解决你的问题,请参考以下文章
在服务器上调用 PHP 函数但在本地服务器上工作时找不到 JS 函数
如何使用 XAMPP 或 node.js 使 AJAX 在本地服务器上工作
Node.js localhost 服务器无法与我的 php localhost 保持会话
通过 XAMPP 从同一 Apache 服务器提供 PHP 和 Node.JS