如何获取给定日期前后 7 天的日期范围并填充到 select - Laravel
How to get date range of 7 days before and after of given date and populate in select - Laravel
我正在尝试获取 laravel 中 select 字段中特定日期前后 7 个日期的日期列表。
例如,如果特定日期是“2019-07-18”,我想在 select 字段中填充从“2019-07-11”到“2019-07-25”的日期列表。
任何人都可以帮助我实现控制器的代码片段。
您可以使用 carbon period:
$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();
希望对您有所帮助。
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>';
我正在尝试获取 laravel 中 select 字段中特定日期前后 7 个日期的日期列表。 例如,如果特定日期是“2019-07-18”,我想在 select 字段中填充从“2019-07-11”到“2019-07-25”的日期列表。 任何人都可以帮助我实现控制器的代码片段。
您可以使用 carbon period:
$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();
希望对您有所帮助。
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>';