成人式

先日、各地で成人式が行われていました。

あ〜うちのむすめたちもそのうち…などと考えているうちに…

何年後かな?
待てよ…うちのむすめたちは20歳で成人式じゃないな…と思い立ちました。

18歳で成人するのはいつから…だっけ

ふと「成人だったら…」という分岐をしないといけないプログラムが気になった。

今までは $age >= 20 でよかったが…

さて、18歳が成人になるのは…こちらで確認しました。

18歳成年年齢はいつから?

日本での成年年齢は民法で定められています。民法改正により、2022年4月1日から、成年年齢が20歳から18歳に変わります。2022年4月1日に18歳、19歳に達している方は、その日から新成人となります。

政府広告オンラインより

2022年4月1日から 18歳で「成人」となります。

その年の成人式はどうなるんだろう〜〜〜 18歳・19歳・20歳合同だろうか?時期をずらすんだろうか?

大変そう…我が家の娘はどちらもその後成人だからよかった…(のかなw)

ただし、飲酒は20歳から…は変わらない

飲酒や喫煙、競馬・競輪などはこれまでと同様、20歳にならないとできません。

政府広告オンラインより

先に紹介したページに書いてありましたが、今までどおり

飲酒や喫煙、競馬・競艇・競輪などは20歳から…だそうな。

ややこしや〜〜〜

で、本題。PHPで 成人を分岐するコード作った。

いろいろ使えるようにそのまんまメソッド化しました。

こちら…

成人チェックメソッド etc.

<?php
/**
 * 成人チェック
 */
function is_adult( $birthday = null ) {    // $birthday は yyyymmdd または yyyy-mm-dd 文字列の想定
	if ( $birthday === null ) {
		return false;
	} // 生年月日未指定は未成年
	$age = getAge( $birthday );

	return getAdultAge() <= $age;
}

/**
 * 成人年齢(日本向け)
 */
function getAdultAge() {
	// 2022年4月1日から 18歳
	$ymd = date( 'Ymd' );
	if ( intval( $ymd ) >= 20220401 ) {
		return 18;
	}

	return 20;
}

/**
 * 年齢
 */
function getAge( $birthday, $targetday = null ) {
	$current = (int) date( 'Ymd' );
	if ( ! empty( $targetday ) ) {
		$current = (int) date( 'Ymd', strtotime( $targetday ) );
	}
	$birthtime = (int) date( 'Ymd', strtotime( $birthday ) );

	$age = (int) ( ( $current - $birthtime ) / 10000 );

	return $age;
}

で、これ、お試しのコードよ。

上記のコードを util.php という名前のファイルにして読み込んで結果出力するだけのファイル test.php を作りました。

※19710710 ってオレの誕生日w

おためしコード

<?php
include_once( 'util.php' );
echo "成人は" . getAdultAge() . "さい\n";
echo "年齢:" . getAge( '19710710' ) . "さい\n";
echo "おれは成人? " . ( is_adult( '19710710' ) ? "だね" : "じゃねえわ" );

これを

php test.php

で出力したのが下記です。

実行結果

$ php test.php
成人は20さい
年齢:48さい
おれは成人? だね

以上w

年齢を計算するメソッド getAge と

成人年齢を出すメソッド getAdultAge と

この誕生日の人は今成人なの?を判定するメソッド is_adult です。

is_adult だけスネークケースなのはどうなんと思ったけど、なんとなくねw

最後に

一応…ですが、日本での使用に限ります。

この記事が気に入ったら
いいね ! しよう

Twitter で