外部のAPIを叩いて、年齢を算出する処理を書く必要があったので、その時に実行した関数のことを記録しておく。
答えのコード
sample.php
date_default_timezone_set('Asia/Tokyo');
$currentDate = date('Y/m/d'); //2020-01-29
$birthday = "あなたの誕生日 例:1980-01-01";
$fc = (int)date('Ymd', strtotime($currentDate)); //20200129
$fb = (int)date('Ymd', strtotime($birthday)); // 19800101
$age = (int)(($fc - $fb) / 10000); //40
解説
まず、タイムゾーンの設定をして基準の時間を日本にします。
date_default_timezone_set('Asia/Tokyo');
次に、date
関数で現在の日時の算出します。加えて、あなたの誕生日を入力してください。
date
関数は第一引数で指定したフォーマットでその日時を出力します。
この時のデータ型はstring
です。
$currentDate = date('Y/m/d');
$birthday = "あなたの誕生日 例:1980-01-01";
次に、先ほどの$currentDate
と$birthday
をstrtotime
でタイムスタンプとして出力したものをint
型に書き換えます。
この時date
のフォーマットをYmd
に指定することで日付を数値として出力させることができます!
例えば、1980-01-01
が19800101
として変換されます。
加えて、int
型に変換することで整数値かつ数値として変換されます。
$fc = (int)date('Ymd', strtotime($currentDate));
$fb = (int)date('Ymd', strtotime($birthday));
最後に、引き算をして10000で割ります。
引き算のフロー: 20200129 - 19800101 = 400028
10000でわる: 400028 / 10000 = 40.0028
つまり、西暦の足し算で年齢の10000
倍算出して、それを10000
で割ることで年齢だけを整数値で変数に納めています。
$age = (int)(($fc - $fb) / 10000);