我希望我的用户能够输入以下值:
4 hours
23 minutes
等等
strtotime 非常适合将这些值转换为秒,但它会将它们添加到当前时间。有没有办法让它返回输入的总时间量,而不是从现在开始?还是我需要做这样的事情:
$time = strtotime($value) - time();
只是为了争论,如果时间值在 strtotime 评估它和 time 评估它之间发生变化会发生什么?
$time = strtotime($value, 0);
$time = strtotime($value) - time();
只是为了争论,如果时间值在 strtotime 评估它和 time 评估它之间发生变化会发生什么?
然后你会错过几秒钟(可能是 1 秒),因为strtotime($value)
首先被评估,如果时间过去了,结果time()
会比预期的要大(可能是 1 秒;))
您可以使用此模式确保始终在同一时间工作:
$start = time();
$time = strtotime($value, $start) - $start;
或者更简单,通过将第二个参数设置为 0 来跳过减法:
$time = strtotime($time, 0);