1

我是英国人,但为一位美国客户工作,他希望显示时间加上偏移量。

为什么会这样:

$date = date('d-m-Y H:i');
$timeToAdd = strtotime(date("d-m-Y H:i", strtotime($date)) . " + 8 hour");
$newDate = date('d-m-Y H:i', $timeToAdd);
echo 'Current Time: ' . $date . '<br/>Time + 8 Hours: ' . $newDate;

产生:

当前时间:17-06-2012 08:53 时间 + 8 小时:17-06-2012 16:53

这不会(月份和日期切换):

$date = date('m-d-Y H:i');
$timeToAdd = strtotime(date("m-d-Y H:i", strtotime($date)) . " + 8 hour");
$newDate = date('m-d-Y H:i', $timeToAdd);
echo 'Current Time: ' . $date . '<br/>Time + 8 Hours: ' . $newDate;

产生:

当前时间:06-17-2012 08:56 时间 + 8 小时:12-31-1969 16:00

1969

?!

4

1 回答 1

5

请参阅文档中strtotime()的注释部分:

笔记:

m/d/y或格式中的日期d-m-y通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜线 ( ),则假定/为美式;m/d/y而如果分隔符是破折号 ( -) 或点 ( ),则假定.为欧洲格式。d-m-y

为避免潜在的歧义,最好使用 ISO 8601 ( YYYY-MM-DD) 日期或DateTime::createFromFormat()尽可能使用。

您使用 a-作为分隔符,因此假设d-m-y.

于 2012-06-17T16:04:31.093 回答