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