管理PHP时间功能

时间:2014-05-13 10:50:59

标签: php datetime timezone

我正在使用godaddy托管服务,我可以管理当地时间,我必须使用美国/凤凰城的服务器默认时间。

即使我正在使用date_default_timezone_set("Asia/Kolkata"); 功能在我的配置文件中然后也没有时间差异和godaddy人们没有准备好帮助我,我厌倦了打电话给这些家伙但没有回应,我讨厌他们。

有什么方法可以使用任何函数或任何外部API来获取当地时间吗?

我正在使用此代码

       //set time zone india
       date_default_timezone_set("Asia/Kolkata");
       $timezone = date_default_timezone_get();
       echo "The current server timezone is: " . $timezone;
       $date = date('m/d/Y h:i:s a', time());
       echo $date."<br>";    

我得到的输出是

    The current server timezone is: Asia/Kolkata05/14/2014 12:06:26 am

即使这是下午4点38分......

2 个答案:

答案 0 :(得分:0)

date_default_timezone_set应该适用于像date这样的PHP函数,但是我会猜测你在MySQL等数据库中遇到日期/时间元素问题。

我知道我之前遇到过类似的问题,当时试图将所有内容都放在UTC而不是欧洲/伦敦......

建立与数据库的连接后,请务必运行此查询:

SET time_zone = 'Asia/Kolkata';

除了date_default_timezone_set之外,这应该可以解决您的问题。但是,如果您使用DATETIME列,那么这些列将无法修复。 TIMESTAMP列将自动固定到新时区,因为它们在内部保存为UTC并在检索时进行转换。

答案 1 :(得分:0)

你不应该触摸date_default_timezone_set。正确的方法是使用DateTimeZone对象。像这样:

    $now = new \DateTime('now', new \DateTimeZone('Asia/Kolkata'));
    echo $now->format(\DateTime::ATOM);

因此,我们的想法是您在服务器的时区中创建一个对象,然后将其转换为您的时区