没有当前时间的 PHP strtotime


PHP Strtotime without current time?

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

4 hours
23 minutes

等。

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

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

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

$time = strtotime($value, 0);

http://php.net/strtotime

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

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

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

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

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

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

$time = strtotime($time, 0);