我有一个函数在PHP中使用strtotime()和相对时间格式,应该返回一周的第一天,但它被自动设置为星期日而不是星期一。有什么办法可以改变这一点吗?
function start_of_week() {
$monday = strtotime('monday this week');
return date("Y-m-d", $monday);
}
例如今天是11号星期天,上面的函数返回明天的日期,而明天应该是星期一下一个星期
我想这对你有用。
function start_of_week()
{
$monday = strtotime('monday this week');
$today_day = date('D');
if($today_day != "Mon")
$start_of_week = date('Y-m-d', strtotime("last monday"));
else
$start_of_week = date("Y-m-d", $monday);
return $start_of_week ;
}
我认为这是你需要的,参数startFrom被初始化为星期一,如果你喜欢,你可以改变这一点,但我认为你可能需要调用这个函数以后使用默认的开始日期。相反,调用start_of_week(2)将星期二设置为一周的第一天,因此您现在需要使用start_of_week(7)
function start_of_week($startFrom=1) {
$dateTime =new DateTime(); // today
$diff = ($startFrom - $dateTime->format('N'));
if ($diff > 0) { $diff -= 7; }
$dateTime->modify("$diff days");
return $dateTime->format('Y-m-d');
}
echo start_of_week(7);
我试了下一个,一切正常:
$monday1 = strtotime("monday this week");
$monday2 = strtotime("next monday");
$monday3 = strtotime("monday next week");
echo '<br>'.date("Y-m-d", $monday1); // output : 2014-05-12
echo '<br>'.date("Y-m-d", $monday2); // output : 2014-05-12
echo '<br>'.date("Y-m-d", $monday3); // output : 2014-05-19
那么,你的问题在哪里?