为什么php中的DATE_FORMAT()落后几个小时?

时间:2013-07-07 01:46:23

标签: php date date-format

我用来向数据库提交数据的表单正在错误地处理时间(通常比实际时间晚几个小时)。下面的输出真的是在9:28而不是7:28完成的。如何解决这个问题,以便正确处理时间?我不想用军事时间。它可能是我的网站托管服务的东西吗?我在XAMPP上试过这个,一切正常。任何帮助将不胜感激。

代码:

DATE_FORMAT(posts.post_date, '%W, %M %e, %Y at %h:%i %p') AS date

输出:

Saturday, July 6, 2013 at 07:28 PM

3 个答案:

答案 0 :(得分:2)

时间会耗费您的服务器时间。一个简单的解决方法是在调用date()或time()函数之前手动设置时区。

我在印度的加尔各答,所以我有这样的事情:

date_default_timezone_set('Asia/Kolkata');

另一个例子是洛杉矶 - 美国:

date_default_timezone_set('America/Los_Angeles');

您还可以通过以下方式查看服务器当前的时区:

date_default_timezone_get();

类似于:

$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;

所以你的问题的简短答案是:

// Change the line below to your timezone!
date_default_timezone_set('Asia/Kolkata');
$date = date('m/d/Y h:i:s a', time());

然后所有时间都是你刚刚设定的时区:)

答案 1 :(得分:1)

如上所述,您可以使用设置日期和时间的默认时区 date_default_timezone_set()。可以找到文档here

可以找到支持的时区列表here。您可以在上述方法中将默认时区作为参数传递。

答案 2 :(得分:0)

如果你打开E_NOTICE,你可能会解决这个问题,因为如果你在没有设置时区的情况下使用日期/时间功能,它就会收到通知。

  

bool date_default_timezone_set(string $ timezone_identifier)

E.G:

<?php
date_default_timezone_set('America/Los_Angeles');

http://www.php.net/manual/en/function.date-default-timezone-set.php