現在リニューアル中 → 旧サイトはこちら

和暦変換

// 元号の計算(2020年12月31日まで) // 戻り値:計算結果の文字列 function calc_wareki($yyyy, $mm, $dd) { $border = array( array(開始日 => 18680909, 終了日 => 19120730, 元号 => 明治), array(開始日 => 19120730, 終了日 => 19261225, 元号 => 大正), array(開始日 => 19261225, 終了日 => 19890107, 元号 => 昭和), array(開始日 => 19890107, 終了日 => 20201231, 元号 => 平成) ); $target = sprintf("%04d%02d%02d", $yyyy, $mm, $dd); if ($target < $border[0][開始日]) return "計算対象外"; for ($i=0; $border[$i]; $i++) { if ($border[$i][開始日] <= $target && $target <= $border[$i][終了日]) { $temp = ($yyyy - substr($border[$i][開始日], 0, 4) + 1); $wareki = $border[$i][元号].($temp == "1" ? "元" : $temp); break; } } if ($i > 3) return "計算対象外"; return sprintf("%s年%d月%d日", $wareki, $mm, $dd); }

干支の取得

function get_eto($year){ $arr_eto = array("子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"); $idx = ($year + 8) % 12; return $arr_eto[$idx]; }

第○曜日の取得

「1月の第2月曜日」や「10月の第2月曜に」など、特定の曜日の日付を取得する。
(手順)
(1)指定年月の1日目の曜日を求める。 (2)取得したい曜日との差から最初の曜日日付(第1x曜日)を取得する。
(3)取得した日付に7の倍数を加算して指定集の指定曜日(第x1x曜日)を算出する。

/** * 指定年月のx番目のx曜日の日付を取得 * * @param int $mon   月 * @param int $num   週番号 * @param string $week 曜日 * @return int     日付(当月を超えた場合は0を返す) */ function get_weekday($year, $mon, $num, $week) { // 曜日テーブルから曜日番号を取得 $arr_week = array("日","月","火","水","木","金","土"); $search_week = array_search($week, $arr_week); // 指定曜日の最初の日付を取得 $first_week = date("w", mktime(0,0,0,$mon,1,$year)); // 指定週の日付を算出 $ret_day = $search_week - $first_week + 1; if ($ret_day < 1) { $ret_day += 7; } $ret_day = $ret_day + ($num-1) * 7; // 当月を超えた場合は0を返す if ($ret_day > 31) { $ret_day = 0; } return $ret_day; }

年齢の算出

誕生日から現在の年齢を算出する。

function get_age($b_yy, $b_mm, $b_dd) { $b_yy = intval($b_yy); $b_mm = intval($b_mm); $b_dd = intval($b_dd); //今日の日付 $today = getdate(); //概算年齢 = 現在年 - 誕生年 $age = $today['year'] - $b_yy; //誕生月を過ぎていない場合、概算年齢から1引く if ($today['mon'] < $b_mm) { $age--; //今日が誕生月の場合 } elseif ($today['mon'] == $b_mm) { //誕生日を過ぎていない場合、概算年齢から1引く if ($today['mday'] < $b_dd) { $age--; } } //誕生日が今日より大きければ0を返す if ($age < 0) { return 0; } else { return $age; } }