我需要计算从 1708 到今天的 2 个日期之间的十年数 - 据我所知,限制是 PHP 本机函数中的 1970/1901。
任何人都可以建议吗?
谢谢!
如果您的 PHP >= 5.3.0:
$before = new DateTime('1708-02-02');
$decades = $before->diff(new DateTime())->y / 10;
你可以使用Zend_Date。它是 Zend 框架的一部分,但可以独立使用,您无需安装整个框架即可使用它。bcmath
如果将扩展安装到您的 PHP 中,它可以使用 1901 年以后的日期。从 Zend_date 的操作理论:
这是唯一可能的,因为 Zend_Date 不限于 UNIX 时间戳或整数值。BCMath 扩展需要支持超出格林威治标准时间 1901 年 12 月 13 日星期五 20:45:54 至格林威治标准时间 2038 年 1 月 19 日星期二 03:14:07 范围之外的极大日期。此外,由于浮点数据类型和舍入的固有限制,可能会出现微小的数学错误,除非使用 BCMath 扩展。
我喜欢推荐 Zend 组件,因为它们是经过精心修饰的高质量代码。不过,还有其他解决方案,例如使用mySQL 日期函数。
我会写一个自定义方法。
PHP 日期函数基于纪元( 1969 ),因此不会有太多帮助。
如果你只看年份,那就是简单的数学
较高的年份 - 较早的年份 = 年份 / 10 = 几十年。
如果您的意思是从 01-10 到 11-20 的几十年,那么您可以进行一些舍入。(将早期日期向上取整,后期向下取整至最接近的 10。