如何在php中获取特定国家/地区的正确日期时间

时间:2014-01-12 20:51:34

标签: php mysql

您好我需要在用户注册时节省时间。我正在尝试PHP中的代码来生成印度特定的时间。

 $timezone = new DateTimeZone("Asia/Kolkata" );
        $date = new DateTime();
        $date->setTimezone($timezone );
        $dtobj = $date->format('Y-m-d H:i:s');
echo $dtobj;

它正在工作但没有显示正确的时间。我正在使用Godaddy服务器。 代码给出的时间是2014-01-13 10:21:29但实际时间是2014-01-13 02:20:55。我在Google上搜索并尝试了几乎所有功能,但获得了相同的差异。我该怎么做才能获得准确的时间。

2 个答案:

答案 0 :(得分:1)

我遇到过许多基于时间的问题,这些问题已经通过修改服务器的php.ini文件得到了解决(希望你有权访问这个?)。我发现在其他地方(即在脚本中)设置时区是徒劳的。

编辑php.ini文件:

  1. 找到您的ini文件(通常是/etc/php5/apache2/php.ini或类似的)
  2. 追踪第;date.timezone =行(通常是第1018行)
  3. 取消注释设置(删除前导;
  4. 添加您的时区,例如:date.timezone = Asia/Kolkata
  5. 重新启动apache sudo service apache2 restart

答案 1 :(得分:1)

使用date_default_timezone_set()函数设置默认时区:

<?php

date_default_timezone_set('UTC');

$date = new DateTime('now');
echo 'UTC:     '.$date->format('Y-m-d H:i:s')."\n";

$date = new DateTime('now', new DateTimeZone('Europe/Lisbon'));
echo 'Lisbon:  '.$date->format('Y-m-d H:i:s')."\n";

$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
echo 'Kolkata: '.$date->format('Y-m-d H:i:s')."\n";

?>

输出:

UTC:     2014-04-05 13:45:56
Lisbon:  2014-04-05 14:45:56
Kolkata: 2014-04-05 19:15:56
相关问题