如何获得两个特定时间段之间的时间
问题描述:
我所做的实际上是从上午8点到下午9点间隔1小时的时间间隔,但它并没有给我正确的结果。这是我的代码如下如何获得两个特定时间段之间的时间
<?php
$date = date("08:00");
for($i=1; $i<=10; $i++)
{
$date = strtotime("+".$i." hour");
echo date('H:i A', $date);
}
?>
它与当前时间开始! 感谢您的帮助。
答
有几个不同的问题在这里解压:
$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,它给你一个面向对象的接口,使用日期&倍。对于这样的简单脚本,这并不重要。
你确定你可以使用date()吗?我的意思是$ date与date(“08:00”)的价值是什么? – MacBooc
日期的第一个参数不是时间,而是格式。 http://php.net/manual/en/function.date.php – Andreas