この時期にしか食べられない、敷島堂の栗おこわ(激うま)を、今年も食べることが出来て満足しているキューロ小坂です。
先日、メルマガで仕事関連の記事を書きました。
その時に、ブログでは仕事関連の記事をまったく書いていないことに気がついたので、今回はPHPについて書いてみようと思います。
Webシステムを作成する際に、生まれてからの日にちを計算する必要が出てきました。しかも、何日ではなく、何年何ヶ月何日で表示しなくてはいけません。
うるう年があるし計算は結構面倒だなと思ったのですが、よくよく考えてみると何年何ヶ月何日の計算は、うるう年を気にする必要がありません。
function calculateBirthdays($date)
{
// 誕生日のチェック(日付フォーマットと未来の誕生日を入力していないか確認)
$format = 'Y-m-d';
$d = date_create_from_format($format, $date);
if ($d && date_format($d, $format) === $date && $date < date('Y-m-d')) {
// 本日の年月日を数値化
$now_year = idate('Y');
$now_month = idate('m');
$now_day = idate('d');
// 誕生日を年月日に分解
$birthday = explode('-', $date);
$birthday_year = (int)$birthday[0];
$birthday_month = (int)$birthday[1];
$birthday_day = (int)$birthday[2];
$result_year = 0;
// 年を計算
if ($now_year > $birthday_year) {
$result_year = $now_year - $birthday_year;
if ($now_month < $birthday_month || ($now_month === $birthday_month && $now_day < $birthday_day)) {
$result_year--;
}
}
// 何ヶ月を計算
$result_month = $now_month - $birthday_month;
if ($now_day < $birthday_day) {
$result_month--;
}
if ($result_month < 0) {
$result_month += 12;
}
// 日を計算
if ($now_day >= $birthday_day) {
$result_day = $now_day - $birthday_day;
} else {
if ($now_month - 1 < 1) {
$y = $now_year - 1;
$m = 12;
$d = 1;
} else {
$y = $now_year;
$m = $now_month - 1;
$d = 1;
}
$ymd = $y . '-' . $m . '-' . $d;
$result_day = date('t', strtotime($ymd)) - ($birthday_day - $now_day);
}
$result = $result_year . '年' . $result_month . 'ヶ月' . $result_day . '日';
} else {
$result = '誕生日エラー';
}
return $result;
}
echo calculateBirthdays('1982-12-20');
出力:38年10ヶ月13日
誕生日を「年」「月」「日」に分解して、それぞれで計算すればOKです。
これで生まれてから何年何ヶ月何日が表示されると思います。
キューロ小坂でした。