我是英国人,但为一位美国客户工作,他想要的是时间显示和补偿。
为什么这是可行的:
$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年
?!
发布于 2012-06-18 00:04:31
请参阅the documentation for strtotime()中的注释部分
备注:
通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式中的日期的歧义:如果分隔符是斜杠(/),则假定为美国m/d/y;而如果分隔符是破折号(-)或点(.),则假定为欧洲d-m-y格式。
为了避免潜在的歧义,最好尽可能使用ISO8601 (YYYY-MM-DD)日期或DateTime::createFromFormat()。
您使用-作为分隔符,因此假定为d-m-y。
https://stackoverflow.com/questions/11072730
复制相似问题