2009-09-23 74 views
4

我们的服务器设置为GMT时间,因此小时不会在春季和秋季继续跳跃。然而,在夏季,令人烦恼的是,所有时间都显示一个小时。如何使用PHP显示当地时间

如何获取并显示时间,并考虑到PHP中的本地时区(特别是当服务器认为本地时区为GMT时)。

或者,我怎么知道某个地区目前是否正在使用“夏令时”?

或者,如何显示GMT时间戳或不同的时区?

+0

当你说local:local是谁?服务器?每个用户?只有你? – jimyi 2009-09-23 16:13:48

+0

用户本地(对于所有用户都是相同的,但与服务器所在的区域不同) – 2009-09-23 16:15:01

+0

为避免混淆,夏令时与此处的夏令时相同。 – 2009-09-23 16:16:50

回答

-3

获取日期/时间并首先检查月份(如果其DATETIME字段是否为破折号)是“夏季月”还是导致时间为一小时的月份。

如果是这样,请将其转换为unix时间戳。然后,将60 * 60(60分钟)添加(或减去出现的方式)到时间戳并转换为可读格式。

问题解决!

+0

夏季时间不在月份边界上打开和关闭。你可能知道“夏令时”,如“夏令时”。 – 2009-09-23 16:16:03

+1

这里有内置的功能!攻击你自己的夏令时(这是一个令人讨厌的黑客攻击)是事情如何分解的道路。 – s4y 2009-09-23 17:35:48

+0

问题未解决。延期问题。 – GZipp 2009-09-23 22:18:48

0

可以使用date功能失调GMT

+0

你可以吗?你怎么做到这一点?您可以使用它来查明夏令时是否开启,或时区是什么,但我看不到如何使用此功能调整时区... – 2009-09-23 16:24:57

+0

您应该添加一些关于如何使用您的解决方案的示例,它会改善你的答案。 – Yaroslav 2012-11-18 00:39:22

4

你可以在PHP中加入这一行:

putenv("TZ=US/Eastern"); 

而且到时候每个后续调用()/日期()会给你的时间你的时区。

List of time zones

此代码将在东部时区(美国)显示当前时间:

putenv("TZ=US/Eastern"); 
date("h:i:s") 
0

显示当地时间最简单的方法是使用JavaScript:

<?php 

// Get unix time from database 
$seconds = .....; 

?> 
<html> 
    <head> 
    <script type="text/javascript"> 
     function showLocalTime() 
     { 
      var seconds = <?=$seconds;?>; 
      var date = new Date(seconds*1000); 
      var hours = date.getHours(); 
      var minutes = "0" + date.getMinutes(); 
      var seconds = "0" + date.getSeconds(); 
      var formattedTime = hours + ':' + minutes.substr(minutes.length-2) + ':' + seconds.substr(seconds.length-2); 

      document.getElementById("local_time").innerHTML = "Local Time: " + formattedTime; 
     } 
    </script> 

    </head> 

    <body onload="showLocalTime()"> 
    <h2 id="local_time"> Local Time: </h2> 
    </body> 

</html>