我有一些时间要打印出来。我想要已经过去的时间让我们说12:00时钟是'灰色'。
$ theTime = '12:00';
if($ theTime> = $ time [$ i]) {....}
02:30
03:50
03:20
04:50
05:45
19:45
20:00
20:50
20:55
21:25
21:30
22:00
22:45
23:55
00:50
00:55
我正在做一个简单的比较12点钟到每个值。 当您将时间更改为午夜之后(例如00:15)时会发生此问题。当时间过了午夜时,如何按顺序计算和打印列表?
答案 0 :(得分:5)
如果你过了午夜,则涉及一天以上。这意味着您必须包含当天的信息!今天是星期几?所以为了达到你想要的效果,你应该列出/存储的不仅仅是时间!如果你存储一个日期时间值,你就不会有计算时差的问题,因为php会根据日期信息知道按时间顺序排列时间。
他们也会帮助你计算差异!
答案 1 :(得分:1)
使用unix时间戳。为午夜创建一个unix时间戳,然后将所有其他时间戳与之比较。然后将其格式化为打印出来的时间。
(因为我使用过PHP,所以不记得怎么做,但应该很简单。我知道我之前做过类似的事情。看看http://php.net/time,{{3} }和http://php.net/manual/en/function.mktime.php。应该很简单=)
答案 2 :(得分:1)
正如Svish所说,你应该使用真正的时间戳,你还应该检查日期变化......我认为,这里更快速,更简单地了解2次(和日期)之间的差异:
<?php
$dateDiff = $date1 - $date2;
$fullDays = floor($dateDiff/(60*60*24));
$fullHours = floor(($dateDiff-($fullDays*60*60*24))/(60*60));
$fullMinutes = floor(($dateDiff-($fullDays*60*60*24)-($fullHours*60*60))/60);
echo "Differernce is $fullDays days, $fullHours hours and $fullMinutes minutes.";
?>
请注意$ date1和$ date2必须采用mktime格式,如下:
int mktime ([ int $hour=date("H") [, int $minute=date("i") [, int $second=date("s") [, int $month=date("n") [, int $day=date("j") [, int $year=date("Y") [, int $is_dst=-1 ]]]]]]] )
答案 3 :(得分:1)
我解决了这个问题如下。它不是最好的解决方案,但至少它有效:
$before_midnight = strtotime("23:59:59");
$before_midnight++; // this makes exact midnight
$start = strtotime("21:00");
$target = strtotime("03:00");
$after_midnight = strtotime("00:00");
for($i=$start; $i<$before_midnight; $i += 3600)
echo date("H:i", $i). "<br>";
for($i=$after_midnight; $i<=$target; $i += 3600)
echo date("H:i", $i). "<br>";
答案 4 :(得分:0)
重新。 Svish的建议 - strtotime()可以方便地创建相对于当前时间或任意时间的Unix时间戳。
e.g。 strtotime('midnight')将为您提供最近午夜的unix时间戳。
答案 5 :(得分:0)
你有一个字符串('12:00'
)并且正在尝试将其比作数字。
http://us3.php.net/manual/en/language.operators.comparison.php
像Svish和Paul所说,你需要使用整数时间戳。
$now = time(); // Get the current timestamp
$timestamps= array(strtotime('midnight'),
strtotime('07:45'),
...
);
foreach ( $timestampsas $time ) {
if ( $time >= $now ) {
// $time is now or in the future
} else {
// $time is in the past
}
}
您可以使用date功能格式化时间戳。