0

我希望我的用户能够输入以下值:

4 hours

23 minutes

等等

strtotime 非常适合将这些值转换为秒,但它会将它们添加到当前时间。有没有办法让它返回输入的总时间量,而不是从现在开始?还是我需要做这样的事情:

$time = strtotime($value) - time();

只是为了争论,如果时间值在 strtotime 评估它和 time 评估它之间发生变化会发生什么?

4

2 回答 2

5
$time = strtotime($value, 0);

http://php.net/strtotime

$time = strtotime($value) - time();

只是为了争论,如果时间值在 strtotime 评估它和 time 评估它之间发生变化会发生什么?

然后你会错过几秒钟(可能是 1 秒),因为strtotime($value)首先被评估,如果时间过去了,结果time()会比预期的要大(可能是 1 秒;))

于 2012-05-30T13:21:52.397 回答
0

您可以使用此模式确保始终在同一时间工作:

$start = time();
$time = strtotime($value, $start) - $start;

或者更简单,通过将第二个参数设置为 0 来跳过减法:

$time = strtotime($time, 0);
于 2012-05-30T13:53:26.293 回答