可能重复:
计算工作日
我有一份显示项目时间表的报告,在该报告中我有一个信号量,它会随着项目计划开始日期和实际日期之间的差异而变化,即:
如果计划日期与实际开始日期相同,则信号量为绿色。
如果日期之间的天数差 > 0 且 < 2,则为黄色。
如果差值 > 3,则信号量为红色。
我的代码如下所示:
if( (strtotime($real) - strtotime($planned)) == 0 )
{
$semaphore = 'green';
}
问题是计划日期例如在星期五,而项目实际上是在下星期一开始的。在这种情况下,信号量应该是黄色的,因为项目比计划晚了一天(工作)开始。问题是我在计算周六和周日,信号量显示为红色。
我怎样才能做出这个例外?
编辑:
我终于这样做了:
if((date('l',strtotime($planned)) == 'Friday') AND (strtotime('next monday',strtotime($planned)) == strtotime($real)))
{
$semaphore = 'yellow';
}