2

このコードを取得して、フォームのフィールドから年齢を計算しようとしています。

<?php
   $birthDate = "$dob";

   $birthDate = explode("-", $birthDate);

   $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md") ? ((date("Y")-$birthDate[2])-1):(date("Y")-$birthDate[2]));
   echo "Age is: ".$age;
?>

しかし、YYYY-MM-DD の入力フィールドの形式を使用することはできません。

$dob を PHP が使用する EU 標準形式の日付に変更すると、魅力的に機能します。

これを修正する簡単な方法はありますか?

4

3 に答える 3

1

日付表記(年、月、日の順)には常に注意してください。

これは機能しています(元のコードが適応されています):

<?php
$birthDate = "1984-05-21";

$birthDate = explode("-", $birthDate);

$age = (date("md", date("U", mktime(0, 0, 0, $birthDate[2], $birthDate[1], $birthDate[0]))) > date("md") ? ((date("Y")-$birthDate[0])-1):(date("Y")-$birthDate[0]));
echo "Age is: ".$age;
?>
于 2013-03-11T15:05:57.940 に答える
0

strtotime($dob)タイムスタンプを取得するために使用します。次に、人間の方法で年齢を計算します。

list($dob_year, $dob_date) = explode('-', date('Y-md', strtotime($dob)));
list($cur_year, $cur_date) = explode('-', date('Y-md'));

$age = $cur_year - $dob_year - ($dob_date >= $cur_date ? 0 : 1);
于 2013-03-11T15:04:11.183 に答える
0

DateTime::diff機能を使用する

<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2013-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%y years');
?>
于 2013-03-11T15:03:32.917 に答える