我正在添加时间表的时间值。 当价值超过24:00我开始有问题..
以下是我正在尝试做的一个简单示例。
$now = strtotime("TODAY");
$time_1 = strtotime('08:00:00') - $now;
$total = $time_1 * 5;
$total = $total + $now;
echo date('H:i', $total);
回音值为16:00:00
但它应该是40:00:00
24:00:00 + 16:00:00 = 40:00:00
所以我明白这是1天16小时。
我如何回应40:00:00
答案 0 :(得分:2)
你做不到。 date()
旨在生成VALID日期/时间字符串。 40
不会出现在正常的时间字符串中。你必须使用math来自己生成那个时间字符串:
$seconds = $total;
$hours = $seconds % 3600;
$seconds -= ($seconds * 3600);
$minutes = $seconds % 60;
$seconds -= ($seconds * 60);
$string = "$hours:$minutes:$seconds";
答案 1 :(得分:2)
以下示例代码以您希望的方式工作。
正如其他人所提到的,你必须自己做这样的案例数学。
<?php
$now = strtotime("TODAY");
$time_1 = strtotime('08:00:00') - $now;
$total = $time_1 * 5;
$secs = $total%60;
$mins = floor($total/60);
$hours = floor($mins/60);
$mins = $mins%60;
printf("%02d:%02d:%02d", $hours, $mins, $secs);
答案 2 :(得分:1)
date
函数用于日期和时间,而不是持续时间。由于时间永远不会是“40:00”,因此永远不会返回该字符串。
你可以考虑使用the DateTimeInterface来获得你想要的东西,但是自己做数学可能更简单。
$seconds = $total;
$minutes = (int)($seconds/60);
$seconds = $seconds % 60;
$hours = (int)($minutes / 60);
$minutes = $minutes % 60;
$str = "$hours:$minutes:$seconds";