字符串到时间不按预期工作

时间:2013-12-16 23:14:30

标签: php time

我无法弄清楚为什么会发生这种情况,但是当我一次添加-10分钟时...它不起作用。

这是一个简化版本:

$time = '08:30';

$time_minus_10m = strtotime($time) +  strtotime("-10 min");

echo '<b>'.$time.'</b> -10 mins is <b>'.date('H:i', $time_minus_10m).'</b>';

输出:

08:30 -10分钟 01:05

但应输出:

08:30 -10分钟 08:20

3 个答案:

答案 0 :(得分:2)

你试过合并吗?

$time_minus_10m = strtotime("$time -10 minutes");

孤立地,strtotime('-10 minutes')只会给你当前时间前10分钟的时间;将其添加到任何其他时间并不再有意义:)

如果您已经存在要锚定的现有时间戳,则可以将其作为要使用的第二个参数而不是当前时间传递。

答案 1 :(得分:1)

因为您在strtotime()来电中没有提供时间,所以从当前时间减去10分钟。尝试:

$time_minus_10m = strtotime("-10 min", strtotime($time));

答案 2 :(得分:1)

$time = new DateTime('08:30');
$cloned_time = clone $time;
$time_minus_10m = $cloned_time->modify('-10 min');

echo '<b>'.$time->format('H:i').'</b> -10 mins is <b>'.$time_minus_10m->format('H:i').'</b>';