我需要创建一个调度程序任务,所以说我在
创建了一个任务`6/24/2014` which is Tuesday the 4th week.
我今天有个约会
`7/27/2014` which is Tuesday the 4th week also
如何检查PHP,以便我今天检查是第四周的星期二,根据以前的任务创建一个新任务(我有一个复制功能,所以主要问题实际上只是日期部分)。
e.g:
$date1 = new DateTime($fromdatabasetheoriginaltaskdate);
$date2 = new DateTime($todaysdate);
另外,让我们假设原始任务是在第5周,那么它将计为该月的最后一周,这意味着,下个月将在该月的最后一周创建任务(无论是第4周还是第5周。
答案 0 :(得分:2)
如果我理解你的问题,你想要在本月的第1周,第2周,第3周创建一个任务,它应该在下个月的第1周,第2周,第3周复制。但是,如果它是在本月的最后一周创建的,它应该在下个月的最后一周创建,无论这个月是第4或第5个。
如果是这样尝试: -
$date = "6/24/2014";
$strtotime = strtotime($date);
$array = array(1=>"first",2=>"second",3=>"third",4=>"fourth",5=>"fifth");
$current_month = date('n',$strtotime);
$day_num = date('d',$strtotime);
$day_word = date('l',$strtotime);
$next_month = date('F',strtotime('next month',$strtotime));
$next_week_month = date('n',strtotime('next '.$day_word, $strtotime));
$num_of_days = date('t',$strtotime);
$week = ceil($day_num/7);
$word = $array[$week];
if($next_week_month > $current_month){
$word = 'last';
}
echo date('m/d/Y', strtotime($word.' '.$day_word.' of '.$next_month.' 2014')); //Outputs 2014-07-29
此脚本也会检查当前日期是否是本月的最后一天。例如: -
2014年6月24日是上周二,但是是第4周,6月有5周。
答案 1 :(得分:1)
假设你在“这个日期是这个月的第N个星期二”中找出N时遇到了麻烦......
如果您执行DateTime::format("d");
,则会收到该号码,在这种情况下为24
。然后你可以除以7并向上舍入。
$date1 = new DateTime($a);
$date2 = new DateTime($b);
$days_in_a_week = 7;
$day1 = $date1->format("d");
$day2= $date2->format("d");
$which_week1 = ceil($day1/$days_in_a_week); //4
$which_week2 = ceil($day2/$days_in_a_week); //4
if ($date1->format("D") == $date2->format("D") && $which_week1 == $which_week2) {
//do stuff
}