PHPは1年の何週間と毎週の開始と終了日を計算します

1862 ワード

プロジェクトでは週報の発行機能が必要で、他のビジネスを処理するために指定した週数の開始日と終了日を知る必要があります.以下はPHPで1年間の毎週の開始日と終了日を取得するコードで、皆さんと共有します.
 
  
function get_week($year) {
    $year_start = $year . "-01-01";
    $year_end = $year . "-12-31";
    $startday = strtotime($year_start);
    if (intval(date('N', $startday)) != '1') {
        $startday = strtotime("next monday", strtotime($year_start)); //
    }
    $year_mondy = date("Y-m-d", $startday); //
 
    $endday = strtotime($year_end);
    if (intval(date('W', $endday)) == '7') {
        $endday = strtotime("last sunday", strtotime($year_end));
    }
 
    $num = intval(date('W', $endday));
    for ($i = 1; $i <= $num; $i++) {
        $j = $i -1;
        $start_date = date("Y-m-d", strtotime("$year_mondy $j week "));
 
        $end_day = date("Y-m-d", strtotime("$start_date +6 day"));
 
        $week_array[$i] = array (
            str_replace("-",
            ".",
            $start_date
        ), str_replace("-", ".", $end_day));
    }
    return $week_array;
}

関数get_week()は、パラメータ$year年を入力することによって、その年の最初の日と最後の日が存在する週数を取得し、最初の週の日付を計算し、各週の最初の日と最後の日の日付をループすることによって取得します.最後に返されるのは配列です.指定した週数の開始日と終了日、例えば2011年第18週の開始日と終了日を取得したい場合、コードは以下の通りです.
 
  
$weeks = get_week(2011);
echo ' 18 :'.$weeks[18][0].'';
echo ' 18 :'.$weeks[18][1];

最終出力結果:第18週開始日:2011.05.02第18週終了日:2011.05.08