4

我正在尝试制作一个像 Stackoverflow 一样的评论系统。我面临的问题是当我的服务器运行 PHP 和我的 MySQL 数据库将时间存储在不同的时区时,如何在本地时间(即 2 小时前)向用户显示他们和其他评论的时间用户。

我知道要在服务器上保留本地时间,我必须使用这样的代码(将欧洲/苏黎世换成您在世界上的任何地方):

$myTimezone='Europe/Zurich'; date_default_timezone_set($myTimezone);

我也明白要将本地时间发送$myTimezone到我的服务器,我需要以这样的方式使用 Javascript 获取本地时间(改编自此处):

 var localDate = new Date(),
 offset= -localDate.getTimezoneOffset()/60; //can send this 'offset' variable via $.ajax to the server

我的问题是,不是date_default_timezone_set($myTimezone);在我的每个 PHP 脚本上都写出时间(最终比评论系统更多的地方),是否可以以某种方式在我的服务器上全局设置本地时间?

4

1 回答 1

3

使用 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 插件 timeago,使用熟悉的 Stackoverflow/Facebook 样式格式化时间(2 小时前......,几秒钟前,等等)

于 2012-11-28T23:12:44.903 回答