如何获得两个特定时间段之间的时间

问题描述:

我所做的实际上是从上午8点到下午9点间隔1小时的时间间隔,但它并没有给我正确的结果。这是我的代码如下如何获得两个特定时间段之间的时间

<?php 
    $date = date("08:00"); 
    for($i=1; $i<=10; $i++) 
    { 
     $date = strtotime("+".$i." hour"); 
     echo date('H:i A', $date); 
    } 
?> 

它与当前时间开始! 感谢您的帮助。

+0

你确定你可以使用date()吗?我的意思是$ date与date(“08:00”)的价值是什么? – MacBooc

+0

日期的第一个参数不是时间,而是格式。 http://php.net/manual/en/function.date.php – Andreas

有几个不同的问题在这里解压:

$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.我会把最后一部分留给你。

https://eval.in/867974

此外,您可能想看看PHP's DateTime library,它给你一个面向对象的接口,使用日期&倍。对于这样的简单脚本,这并不重要。