【问题标题】:PHP add 45 Minutes to a Time with Loop [duplicate]PHP在循环中增加45分钟[重复]
【发布时间】:2013-10-24 08:28:16
【问题描述】:

我正在准备一个预约脚本,用于输入访问开始时间和结束时间,例如 09:00 和 20:00,每个访问时间为 45 分钟。

我想在一个循环中添加从开始时间到结束时间的 45 分钟。但是网上的样品我做不到。

访问时间是动态的,我的意思是它可能是 09:00-20:00 或 11:00-23:00 等。

我正在尝试做的确切解决方案是:

$visit_start = '09:00';
$visit_end   = '20:00';
$difference  =  $visit_end - $visit_start;
$i = 1;
while( $i <= $difference )
{
    print $visit_hour_list = $visit_start + 45;
    $i++;
}    

打印出来的会是这样的:

09:00
09:45
10:30
11:15
12:00

直到结束时间。但我不知道它是如何工作的。

【问题讨论】:

标签: php time


【解决方案1】:

正如answered 在类似的问题"How can I get a range of dates in php?" 中一样,您可以利用PHP 中的DatePeriod 类在开始时间和结束时间之间每45 分钟迭代一次:

Demo:

<?php
/**
 * PHP add 45 Minutes to a Time with Loop
 *
 * @link https://stackoverflow.com/a/19399907/367456
 */

$begin = new DateTime("09:00");
$end   = new DateTime("20:00");

$interval = DateInterval::createFromDateString('45 min');

$times    = new DatePeriod($begin, $interval, $end);

foreach ($times as $time) {
    echo $time->format('H:i'), '-', 
         $time->add($interval)->format('H:i'), "\n"
         ;
}

输出:

09:00-09:45
09:45-10:30
10:30-11:15
11:15-12:00
12:00-12:45
12:45-13:30
13:30-14:15
14:15-15:00
15:00-15:45
15:45-16:30
16:30-17:15
17:15-18:00
18:00-18:45
18:45-19:30
19:30-20:15

【讨论】:

  • @hakre 谢谢谢谢谢谢谢谢,上帝保佑你。
  • 代码是user1281385原创,谢谢。您还应该看到之前已经回答了这个问题,也许您应该更彻底地查看,any PHP 日期/时间问题已经得到回答。相信我。
  • 感谢他,下次我会更加小心,再次感谢。
  • 这确实是正确的方法(比我的方法好很多)。所以,+1。还有@hakre,很好的编辑:)
  • 如果用户使用使用 DST 的时区,可能会出现问题,demo。快速解决方法是设置不使用 DST 的时区,例如 demo
猜你喜欢
  • 2012-11-22
  • 2015-06-28
  • 1970-01-01
  • 2022-01-01
  • 2013-11-18
  • 1970-01-01
  • 2018-10-18
  • 2022-08-10
  • 2011-10-20
相关资源
最近更新 更多