根據指定日期獲取月份、根據當前第幾周獲取該自然周的起始日期
阿新 • • 發佈:2018-12-18
// 獲取指定日期內月份的起始日期
protected function to_month($begin_at , $end_at) {
$month1 = explode("-", $begin_at);
$month2 = explode("-", $end_at);
$count = abs($month1[0] - $month2[0]) * 12 + abs($month1[1] - $month1[1]);
$arr = array();
for ($i = 0; $i <= $count - 1; ++$i) {
$t = strtotime("-$i month");
$arr[] = explode('/', date('Y-m-01', $t) . '/' . date('Y-m-', $t) . date('t', $t));
}
return $arr;
}
// 根據第幾周獲取該周的起始日期
protected function week_day($year, $week = 1) {
$year_start = mktime(0, 0, 0, 1, 1, $year);
$year_end = mktime(0, 0 , 0, 12, 31, $year);
// 判斷第一天是否為第一週的開始
if (intval(date('W', $year_start)) === 1) {
$start = $year_start;//把第一天做為第一週的開始
} else {
$week++;
$start = strtotime('+1 monday', $year_start);//把第一個週一作為開始
}
// 第幾周的開始時間
if ($week === 1 ) {
$weekday['start'] = $start;
} else {
$weekday['start'] = strtotime('+' . ($week - 0) . ' monday', $start);
}
// 第幾周的結束時間
$weekday['end'] = strtotime('+1 sunday', $weekday['start']);
if (date('Y', $weekday['end']) != $year) {
$weekday['end'] = $year_end;
}
return [
'begin_at' => date("Y-m-d", $weekday['start']),
'end_at' => date("Y-m-d", $weekday['end'])
];
}