PHP添加时间,不使用美国日期格式

Ada*_*ite 1 php server-side

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

为什么这样做:

$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;
Run Code Online (Sandbox Code Playgroud)

哪个产生:

当前时间: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;
Run Code Online (Sandbox Code Playgroud)

产生:

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

1969年

?!

Ry-*_*Ry- 5

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

注意:

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

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

你使用a -作为分隔符,所以它是假设的d-m-y.