Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 周日和周六的日期?_Php_Date - Fatal编程技术网

Php 周日和周六的日期?

Php 周日和周六的日期?,php,date,Php,Date,我有一个约会 示例:$date='2011-21-12' 数据格式:yyyy dd mm 如果日期是周六或周日 如果是星期六,则在给定日期的基础上增加2天 如果是星期日,则在给定日期后加1天。 ?您可以为此使用和函数,如下所示: $date = strtotime('2011-12-21'); $is_saturday = date('l', $date) == 'Saturday'; $is_sunday = date('l', $date) == 'Sunday'; if($is_satu

我有一个约会

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

数据格式:yyyy dd mm

如果日期是周六或周日

如果是星期六,则在给定日期的基础上增加2天

如果是星期日,则在给定日期后加1天。 ?

您可以为此使用和函数,如下所示:

$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);
那么这个呢:

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

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');

我能想到的唯一原因是strotime没有在一行代码中识别出数据格式…

if (date('N', $date) > 5) $nextweekday = date('Y-m-d', strtotime("next Monday", $date));
如果一周中的某一天的值大于5(星期一=1,Sat为6,Sun为7),则将$nextweekday设置为下一个星期一的YYYY-MM-DD值

编辑以添加,因为可能不接受日期格式,您需要首先重新格式化日期。在我的代码上方添加以下行:

$pieces = explode('-', $date);
$date = $pieces[0].'-'.$pieces[2].'-'.$pieces[1];
这会将日期按Y-m-d顺序排列,以便strotime能够识别它。

对于星期日日期('w',$date)将返回0,因此最简单的测试代码是:

if(!date('w',strtotime($date)) { ... } //sunday

我只是从8中减去差值,然后把它加到天数中

if(date('N', strtotime($date)) >= 6) {
        $n = (8 - date("N",strtotime($date)));
        $date = date("Y-m-d", strtotime("+".$n." days");
}

你能解释一下确切的格式吗?is
YYYY-DD-MM
?如果((今天+1).isSaturday()){echo“Yeahh!”;}:请注意,这只适用于PHP5.3(每个人都应该使用)。由于日期的格式,这将不起作用。。。当传递“2011-21-12”时,strotime将返回false。很好,没有使用明显的strotime()。
create\u date\u from\u format()
代替strotime将解决预解析问题,并仍然为您提供“下周一”的函数
if(date('N', strtotime($date)) >= 6) {
        $n = (8 - date("N",strtotime($date)));
        $date = date("Y-m-d", strtotime("+".$n." days");
}