0

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

3 回答 3

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());

那么所有时间都将是您刚刚设置的时区:)

于 2013-07-07T01:49:50.347 回答
1

正如我在上面评论的那样,您可以使用为您的日期和时间设置默认时区 date_default_timezone_set()。文档可以在这里找到。

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

于 2013-07-07T01:52:03.747 回答
0

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

bool date_default_timezone_set ( string $timezone_identifier )

例如:

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

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

于 2013-07-07T01:49:44.737 回答