【PHP】 入力した日付や現在の日付が「月の何週目か調べる」関数

PHPで入力した日付や現在の日付が「月の何週目か調べる」関数を自作したのでご紹介します。

タイムゾーンの設定

タイムゾーンの設定は個人でお願い致します。タイムゾーン設定 参考↓

PHP: date_default_timezone_set - Manual
PHP: サポートされるタイムゾーンのリスト - Manual

 

関数の使用例

 使用例 : getMonthWeek(2021,05,09);

 

自作関数

  • 「 : int」は(PHP 7.4.0 以降) で使える型宣言です。
  • strtotime参考 : https://www.php.net/manual/ja/function.strtotime.php
  • 現在の日付をDate()などで取得して渡したい場合は、関数を書き換えるか、explodeなどで分割して引数に渡す様にしてみて下さい。
function getMonthWeek($y,$m,$d): int{
    $arg_unix = strtotime(date("{$y}/{$m}/{$d}"));
    $arg_month_first_unix = strtotime(date("{$y}-{$m}", $arg_unix)); //2xxx年xx月01日の00:00をUNIXタイムスタンプ化した数値

    //86400秒=1日 週の開始の基準を月曜から日曜にする為の変数
    $date_fix_seconds =86400;
    
    //1月1日から何週目かカウント
    $arg_count_week   = (int) date('W', $arg_unix + $date_fix_seconds);
    $month_count_week = (int) date('W', $arg_month_first_unix +$date_fix_seconds);

    //何週目か数える為に1を足した上で計算
    $month_week = 1 + $arg_count_week - $month_count_week;

    //12月の最終週と、1月の最初の週の数字が混ざる問題対処した上でreturn
    if($month_week < 0){
        return 1 + $arg_count_week;
    }else{
        return $month_week;
    }
}

 

最終学歴高卒。実務未経験から自社開発&受託開発をしている企業に入社した、入社1年目のエンジニア。20代前半。
WordPress・PHP / Laravel・JavaScript

ひろきをフォローする

コメント

タイトルとURLをコピーしました