迄今为止,将天数转换为一周的范围



我有几天的阵列:

$days = ['Monday','Tuesday','Thursday','Friday','Sunday'];

我想将其转换为一周范围的日期格式,例如,如果今天的日期是2017年9月28日,我希望结果在数组中看起来像这样:

$dateResult = ['28 Sep','29 Sep','01 Oct', '02 Oct', '03 Oct']

从今天开始,它将在一周范围内找到上述格式的日期

这将从今天开始考虑7天。

$days = ['Monday','Tuesday','Thursday','Friday','Sunday'];
$ret = [] ;
for( $i = 0; $i < 7; $i ++) {
    $t = strtotime('+' . $i . ' day') ;
    if( in_array( Date('l', $t), $days ) ) {
        $ret[] = Date('d M', $t) ;
    }
}
print_r($ret) ;
for ($i = 0; $i < 7; $i++) {
    /* Get day name i.e Friday, Saturday etc */
    $day_name    =     date("l", strtotime("+$i day"));
    /* Store result in array only if day is present in $days */
    if (in_array($day_name, $days)) {
        $result[]    =    date("d M", strtotime("next " . $day_name, strtotime("+". $i ." day")));
    }
}

输出:

Array
(
 [0] => 29 Sep
 [1] => 01 Oct
 [2] => 02 Oct
 [3] => 03 Oct
 [4] => 05 Oct
)

首先,您需要将天转换为数字。示例:1周一,星期二2等。

//$days = ['Monday','Tuesday','Thursday','Friday','Sunday'];
$days_in_number = [1,2,4,5,7];
$r = array();
$today = date('N');
foreach($days_in_number as $x){
  $r[] = date('M-d',strtotime((($today-$x) * -1).' days'));
}
print_r($r);

注意:此代码仅适用于当前1周。

最新更新