我有一个约会。
示例:$date='2011-21-12'
;
数据格式:yyyy-dd-mm;
如果日期是星期六或星期日。
如果星期六在指定日期添加2天。
如果星期日在指定日期添加1天。 ?
答案 0 :(得分:11)
在一行代码中:
if (date('N', $date) > 5) $nextweekday = date('Y-m-d', strtotime("next Monday", $date));
如果星期几的值大于5(星期一= 1,星期六是6,星期日是7),请将$ nextweekday设置为下周一的YYYY-MM-DD值。
要添加的编辑,因为可能不接受日期格式,您需要先重新格式化日期。在我的代码上方添加以下行:
$pieces = explode('-', $date);
$date = $pieces[0].'-'.$pieces[2].'-'.$pieces[1];
这会将日期设置为Y-m-d顺序,以便strtotime可以识别它。
答案 1 :(得分:3)
$date = strtotime('2011-12-21');
$is_saturday = date('l', $date) == 'Saturday';
$is_sunday = date('l', $date) == 'Sunday';
if($is_saturday) {
$date = strtotime('+2 days', $date);
} else if($is_sunday) {
$date = strtotime('+1 days', $date);
}
echo 'Date is now ' . date('Y-m-d H:i:s', $date);
答案 2 :(得分:2)
这个怎么样:
$date='2011-21-12';
if (date("D", strtotime($date)) == "Sat"){
$new_date = date("Y-m-d", strtotime("+ 2 days",$date);
}
else if (date("D", strtotime($date)) == "Sun"){
$new_date = date("Y-m-d", strtotime("+ 1 day",$date);
}
答案 3 :(得分:2)
DateTime对象对这样的事情非常有帮助。 在这种情况下。
$date = DateTime::createFromFormat('Y-d-m', '2011-21-12');
if ($date->format('l') == 'Sunday')
$date->modify('+1 day');
elseif ($date->format('l') == 'Saturday')
$date->modify('+2 days');
如果您想以该格式获取日期。
$date = $date->format('Y-d-m');
答案 4 :(得分:1)
$date = '2011-21-12'
$stamp = strtotime($date);
$day = date("l", $stamp);
if ($day == "Saturday"){
$stamp = $stamp + (2*+86400);
}elseif($day == "Sunday"){
$stamp = $stamp + 86400;
}
echo date("Y-d-m", $stamp);
我能想到为什么这不起作用的唯一原因是strtotime没有认识到数据格式......
答案 5 :(得分:0)
对于星期日日期('w',$ date)将返回0,所以最简单的测试代码是:
if(!date('w',strtotime($date)) { ... } //sunday
答案 6 :(得分:0)
我只是减去了与8相加的差异。
if(date('N', strtotime($date)) >= 6) {
$n = (8 - date("N",strtotime($date)));
$date = date("Y-m-d", strtotime("+".$n." days");
}