我正在使用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分......
答案 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);
因此,我们的想法是您在服务器的时区中创建一个对象,然后将其转换为您的时区