【日付セット】西暦の和暦変換 (paizaランク C 相当) 解答例 – PHP編【paiza】
【日付セット】 > 西暦の和暦変換 (paizaランク C 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
やることは「if」文による条件分岐なのですが、「年、月、日」から条件分岐を作らないといけないため、「date()」関数と「strtotime()」を駆使しなければなりません。やることは単純ですがかなり面倒な問題です。
解答例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php $input = explode(" ",trim(fgets(STDIN))); $year = $input[0]; $mount = $input[1]; $day = $input[2]; $word = $year."/".$mount."/".$day; $test = strtotime($word); $meiji = "1912/7/29"; $meijigo = strtotime($meiji); $taisyoustart = "1912/7/30"; $taisyouend = "1926/12/24"; $taisyoustarttime = strtotime($taisyoustart); $taisyouendtime = strtotime($taisyouend); $syouwastart = "1926/12/25"; $syouwaend = "1989/1/7"; $syouwastarttime = strtotime($syouwastart); $syouwaendtime = strtotime($syouwaend); $heiseistart = "1989/1/8"; $heiseiend = "2019/4/30"; $heiseistarttime = strtotime($heiseistart); $heiseiendtime = strtotime($heiseiend); $reiwa = "2019/5/1"; $reiwatime = strtotime($reiwa); if($test >= $reiwatime){ $year = "令和"; } elseif($test >= $heiseistarttime && $test <= $heiseiendtime){ $year = "平成"; } elseif($test >= $syouwastarttime && $test <= $syouwaendtime){ $year = "昭和"; } elseif($test >= $taisyoustarttime && $test <= $taisyouendtime){ $year = "大正"; } elseif($test <= $meijigo){ $year = "明治"; } echo $year."年".$mount."月".$day."日"; ?> |
解答方針
細かな説明は省かせて頂きますが、日付文字列をUNIXタイムスタンプに変換して和暦を区分けします。UNIXタイムスタンプは簡単に言うと「1970年1月1日からの秒数」です。これを利用し各和暦の範囲を「if」文で定義し、与えられた日付から和暦を出力します。文字列からタイムスタンプに変換するには「strtotime()」を利用します。