我有几天的阵列:
$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周。