为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取给定日期前后 7 天的日期范围并在选择中填充 - Laravel

如何获取给定日期前后 7 天的日期范围并在选择中填充 - Laravel

PHP
慕盖茨4494581 2021-10-15 15:57:52
我试图在 laravel 的选择字段中获取特定日期前后 7 个日期的日期列表。例如,如果特定日期是“2019-07-18”,我想在选择字段中填充从“2019-07-11”到“2019-07-25”的日期列表。任何人都可以帮助我使用控制器的代码片段来实现这一点。
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

function getAgoDays($specDay, $days, $format = 'Y-m-d') {

    $d = date('d', strtotime($specDay)); 

    $m = date('m', strtotime($specDay)); 

    $y = date('Y', strtotime($specDay));

    $dateArray = array();

    for($i=1; $i<=$days; $i++) {

        $dateArray[] = '"' . date($format, mktime(0,0,0,$m,($d-$i),$y)) . '"'; 

    }

    return array_reverse($dateArray);

}

function getBeforeDays($specDay, $days, $format = 'Y-m-d') {

    $d = date('d', strtotime($specDay)); 

    $m = date('m', strtotime($specDay)); 

    $y = date('Y', strtotime($specDay));

    $dateArray = array();

    for($i=1; $i<=$days; $i++) {

        $dateArray[] = '"' . date($format, mktime(0,0,0,$m,($d+$i),$y)) . '"'; 

    }

    return $dateArray;

}


$agoDays = getAgoDays('2019-07-18', 7, 'Y-m-d');

echo '<pre>';

print_r($agoDays);

echo '</pre>';

$agoDays = getBeforeDays('2019-07-18', 7, 'Y-m-d');

echo '<pre>';

print_r($agoDays);

echo '</pre>';


查看完整回答
反对 回复 2021-10-15
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

您可以使用碳周期:


$givenDate = "2019-07-18";

$dateMinusOneWeek = Carbon::parse($givenDate)->subWeek()->format('Y-m-d');

$datePlusOneWeek = Carbon::parse($givenDate)->addWeek()->format('Y-m-d');


$period = CarbonPeriod::create(dateMinusOneWeek , datePlusOneWeek);


//You can iterate over the period

foreach ($period as $date) {

    echo $date->format('Y-m-d');

}


//Or convert the period to an array of dates

$dates = $period->toArray();

希望能帮助到你。


查看完整回答
反对 回复 2021-10-15
  • 2 回答
  • 0 关注
  • 190 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信