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


Why is DATE_FORMAT() in php a few hours behind?

我用来向数据库提交数据的表单处理时间不正确(通常比实际时间晚几个小时)。下面的输出实际上是在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

时间将由服务器时间决定。一个简单的解决方法是在调用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());

然后所有的时间都将是您刚刚设置的时区:)

正如我上面所评论的,您可以使用CCD_ 1。文档可在此处找到。

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

如果你打开E_NOTICE,你可能会解决这个问题,因为如果你使用日期/时间函数而不设置时区,它会弹出通知。

bool date_default_timezone_set(字符串$timezone_identifier)

E.G:

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

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