【问题标题】:Calculate age In Years and Days PHP计算年龄 PHP
【发布时间】:2020-12-28 05:38:18
【问题描述】:

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

谢谢!

$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

【问题讨论】:

  • 简单地制作$days_remaining = 0 如果您的唯一目的是只显示年份,您不认为它会解决问题。而不是确切的年份+天数?
  • 出生日期和当前日期是-09,而您还有 9 天是巧合吗?例如,如果您使用出生为1985-09-13 和当前日期为2020-09-15,会发生什么情况?你也可以new DateTime($born) - 变量已经是字符串了。
  • 一年并不总是 365 天,其中有许多闰日(大约……9 个?)。
  • 那里有闰年,有没有办法进行计算以考虑到这一点?我想也许是 PHP 函数。显然不是。我想展示那些日子。这只是一个例子,我只是碰巧使用了今天的日期。
  • 是的,我只是碰巧今天选了它,因为它是为我的篮球场地准备的,而且今天有一个球员过生日。但对于其他人来说,这也是错误的 7 或 8 天。

标签: php date time converters calculation


【解决方案1】:

因为闰年包含 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

【讨论】:

  • 非常感谢,就这样!!!万分感激 !我只是不知道如何处理其中的闰年部分。
猜你喜欢
  • 2011-04-16
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
相关资源
最近更新 更多