如何在服务器上保留本地时间(使用 JS 和 PHP)



我正在尝试像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

我的问题是,与其在我的每个 PHP 脚本上写date_default_timezone_set($myTimezone);吐出时间(最终不仅仅是注释系统更多的地方),是否有可能以某种方式在我的服务器上全局设置本地时间?

使用 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小时前...,几秒钟前,等等)。

相关内容

  • 没有找到相关文章

最新更新