首页 > 解决方案 > 根据天数的日期

问题描述

我想根据天数对日期进行分类,例如:每 1 个日期,每两个日期,依此类推。

<?php

$date1= strtotime('2019-09-01');
$date2= strtotime('2020-06-30'); 

$nbjour=($date2-$date1)/60/60/24;

for($i=0; $i <= $nbjour; $i++) {

    setlocale(LC_TIME, "fr_FR");
    $day = strftime('%A',$date1);

         if ($day === 'Dimanche' || $day === 'Samedi') {
                  $date = strftime('%A %d %B %G',$date1). ' weekend';
            }
            else{
                  $date = strftime('%A %d %B %G',$date1);
            }
     echo $date;
     $date1+=60*60*24; 
     echo'<br />' ;
 }

我想得到这个结果

[01-09-2019
01-10-2019
01-12-2019
...
02-09-2019
02-10-2019
...
03-09-2019]

标签: phpsortingdate

解决方案


你的问题不清楚。

如果您想更改打印日期的格式,只需更改'%A %d %B %G''%Y-%m-%d'

如果您想更改顺序(首先按天排序),可以尝试以下操作:

$date1 = new DateTime("2019-09-01");
$date2 = new DateTime("2020-06-30");

$arrayOfDates = [];

while($date1 <= $date2) {
    $arrayOfDates[] = clone $date1;

    $date1->add(new DateInterval("P1D"));
}

usort($arrayOfDates, function($a, $b) {
    if( $a->format("j") !== $b->format("j") ) {
        return $a->format("j") - $b->format("j"); 
    }

    if($a < $b) {
        return -1;
    } elseif($a > $b) {
        return 1;
    }

    return 0;
});
foreach($arrayOfDates as $date) {
    echo $date->format("Y-m-d") . "<br/>";
}

那么这个周末的检测呢?


推荐阅读