【问题标题】:How to convert the user local time zone to server timezone using php?如何使用 php 将用户本地时区转换为服务器时区?
【发布时间】:2012-06-07 05:25:58
【问题描述】:

我想创建一个 php 脚本来一次在世界各地进行在线竞赛。

我的第一个问题.. 我真的可以一次完成吗,如果可以,那怎么办?

例如。假设我在 2012 年 6 月 10 日举办了一场比赛,时间是 IST 下午 2-4 点或服务器所在的任何地方。现在我希望来自世界各地的用户只能在这个时候参加比赛。我应该如何告诉用户他的转换后的本地时区?我不希望用户为时间转换而痛苦,我也不愿意为世界各地的用户提供转换工具。

我希望该用户应在提及的当地时区日期和时间参加比赛!。

提前致谢!

【问题讨论】:

    标签: php timezone


    【解决方案1】:

    通过设置 cookie 或使用 ajax 调用来获取客户端的时区。

    【讨论】:

      【解决方案2】:

      很简单。将服务器时间发送给客户端(一些隐藏的跨度或输入。)

      function getLocalTime(gmt)  {
             var min = gmt.getTime() / 1000 / 60; // convert gmt date to minutes
             var localNow = new Date().getTimezoneOffset(); // get the timezone 
                                                            // offset in minutes            
             var localTime = min - localNow; // get the local time
             return new Date(localTime * 1000 * 60); // convert it into a date
          }
      
      //var strDate = [get text date sent from server here];
      var dt = new Date(Date.parse(strDate));
      var localDate = getLocalTime(dt);
      //[Set value of your localTime here]
      

      使用 javascript 将此时间转换为用户本地时间。 仅向用户显示用户当地时间。

      Contest will be held at : <span id='localTime'></span>
      

      【讨论】:

      • 如果您没有展示如何在客户端进行转换,您的答案是不完整的
      • 感谢大家的快速回复!!!如果我不想在客户端进行更改怎么办?我的意思是世界上任何地方的每个用户都会在他的当地时间 2012 年 6 月 10 日下午 2 点登录服务器。并且服务器端应该有一定的机制来检测客户端的时间并匹配数据是否从服务器端的客户端收到的映射到客户端正在进行的比赛时间,然后继续进行进一步的计算。如果理解我的查询有问题,请告诉我!
      • 您总是可以通过javascript获取客户端时间并将其作为请求发送。但是,如果您正在设计比赛,那将很容易被黑客入侵。我真的建议只在服务器上坚持一次,并使用 javascript 让用户更容易按照他的时区阅读。
      • 如果你问你的用户现在几点到他的地方,让我参加相应的比赛,我可以撒谎(发送错误的数据),这样我就有更多的时间。
      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 2020-12-20
      • 2021-12-12
      • 2015-06-07
      • 2016-01-19
      • 1970-01-01
      • 2014-03-15
      相关资源
      最近更新 更多