计算年龄,以PHP为单位

时间:2020-09-09 18:31:01

标签: php date time converters calculation

我知道这些年来已经被问过很多次了,但是我得到的结果仍然与我认为正确的结果不同。我有以下代码计算两个日期之间的天数,然后将其转换为年和天。当我转换结果不是我所期望的。见下文。请让我知道不正确的地方,这真令人沮丧。

谢谢!

$born = '1985-09-09';
$date = date('Y-m-d H:i:s'); // this is today's date
$birthdate = new DateTime("$born");
$today = new DateTime("$date");

$diff = $today->diff($birthdate)->format("%a");

$days = $diff;
$years_remaining = intval($days / 365); //divide by 365 and throw away the remainder
$days_remaining = $days % 365;    

echo "<b>Age:</b> ".$years_remaining."y-".$days_remaining."d<br />";

我想出现的内容: 年龄:35y-0d

但是我得到的是: 年龄:35y-9d

1 个答案:

答案 0 :(得分:1)

因为leap年包含366天,所以不能仅仅划分365天:

<?php
$born = '1985-09-05';
$date = date('Y-m-d H:i:s'); // this is today's date
$birthdate = new DateTime("$born");
$today = new DateTime("$date");

// get diff in full years
$diff_years = $today->diff($birthdate)->format("%y");

// add years diff to birthday, (so here your last birthday date)
$birthdate->add(new DateInterval("P{$diff_years}Y"));

// count days since your last birthday party day
$diff_days = $today->diff($birthdate)->format("%a");

echo "Age: ".$diff_years."y and ".$diff_days." days ";

Here you can try live PHP code