我所做的实际上是从早上8点到晚上9点迭代,间隔为1小时,但它并没有给我正确的结果。这是我的代码
CU_ASSERT_EQUAL
以当前时间开始! 谢谢你的帮助。
答案 0 :(得分:1)
在这里解压包装有几个不同的问题:
$date = date("08:00");
这不是很有用。 date
用于格式化时间戳 - 您无法使用它来创建一个小时:分钟字符串,如下所示。
你可能想要的是
$date = strtotime("08:00");
这不会导致任何问题的原因是你在循环中然后立即用以下内容覆盖它:
$date = strtotime("+".$i." hour");
将创建一个新的时间戳,但它相对于现在,而不是您的初始时间。说" +1小时"表示您想要一个now + 1 hour
的时间戳。您可以使用strtotime
使用第二个参数...
$date = strtotime("+{$i} hour", $date);
...但您仍然会覆盖您的起始值。所以,让我们把它放在一个名为$start
的变量中:
$start = strtotime("08:00");
...
$date = strtotime("+".$i." hour", $start);
这会让你:
<?php
$start = strtotime("08:00");
for($i=0; $i<=10; $i++) {
$date = strtotime("+{$i} hour", $start);
echo date('H:i A', $date), PHP_EOL;
}
将输出:
08:00 AM
09:00 AM
10:00 AM
...
18:00 PM
它并不能让你到晚上9点,因为距离早上8点还有十个小时,但是13岁。我会把最后一部分留给你。
此外,您可能需要查看PHP's DateTime library,它为您提供了一个面向对象的界面,用于处理日期和时间。倍。对于像这样的简单脚本,它并不重要。