如何在PHP或MySQL中用极简代码计算用户实足年龄(无需过多变量)
计算实足年龄的简洁实现(PHP & MySQL)
PHP 部分
你写的简化代码存在语法错误,diff()方法必须接收一个DateTime对象作为参数,不能直接通过->diff->$row['birthday']这种方式调用。不过确实可以简化成一行无多余变量的代码:
echo (new DateTime())->diff(new DateTime($row['birthday']))->y;
逻辑很直接:先创建当前时间的DateTime实例,调用diff()方法传入生日对应的DateTime实例,最后直接获取返回的DateInterval对象的y属性(即已完成的年份数)。
如果你的PHP版本在8.0及以上,还可以用更简洁的命名构造器写法:
echo date_diff(date_create(), date_create($row['birthday']))->y;
MySQL 部分
如果直接在数据库层面计算,用TIMESTAMPDIFF()函数就能一步得到实足年龄,不用再到PHP里处理,效率更高:
SELECT TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age FROM your_table;
这个函数会自动处理未到当年生日的情况,直接返回已完成的实足年份数,完全符合需求。
内容的提问来源于stack exchange,提问作者New-Girl
相关产品推荐
相关产品推荐

