以这种格式的日期开始:2011-05-01 09:00:00
,如何创建一个包含一年中所有工作日(因此排除所有周六和周日)的所有办公时间(09:00 到 17:00)的数组。我想要达到的是这样的:
2011-05-01 09:00:00
2011-05-01 10:00:00
2011-05-01 11:00:00
2011-05-01 12:00:00
2011-05-01 13:00:00
2011-05-01 14:00:00
2011-05-01 15:00:00
2011-05-01 16:00:00
2011-05-01 17:00:00
//next day, starting at 09:00 and ending at 17:00
2011-05-02 09:00:00
...
2011-05-02 17:00:00
//until the last day of the year from 09:00 to 17:00
2011-12-31 09:00:00
...
2011-12-31 17:00:00
开始日期将是当月的第一天,时间为 09:00,最后日期(数组的最后一个元素)将始终是一年中最后一天的 17:00。
再次强调,周末应该被排除在外。
伪代码思路:我想到了类似的事情strtotime($start, "+1 one hour")
有一张支票"if smaller than 17:00"
但事情似乎并没有那么简单。
这个怎么样:
$start = strtotime('2011-05-01');
$end = strtotime('2011-12-31');
$times = array();
for ($i = $start; $i <= $end; $i += 24 * 3600)
{
if (date("D", $i) == "Sun" || date("D", $i) == "Sat")
{
continue;
}
for ($j = 9; $j <= 17; $j++)
{
$times []= date("Y-m-d $j:00:00", $i);
}
}
外循环迭代给定时间段内的所有日期。在外循环中,我们检查这一天是星期六还是星期日(周末),如果是,我们跳过这一天。如果不是周末,我们会循环遍历所有有效时间,并将完整的日期和时间添加到数组中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)