在周日和周六的PHP日期?

时间:2011-02-11 13:43:12

标签: php date

我有一个约会。

示例:$date='2011-21-12';

数据格式:yyyy-dd-mm;

如果日期是星期六或星期日。

如果星期六在指定日期添加2天。

如果星期日在指定日期添加1天。 ?

7 个答案:

答案 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)

您可以使用datestrtotime功能,如下所示:

$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");
}