【发布时间】:2010-02-02 14:00:00
【问题描述】:
我需要计算从 1708 到今天的 2 个日期之间可能存在的十年数 - 据我所知,PHP 原生函数中的限制是 1970/1901。
谁能给点建议?
谢谢!
【问题讨论】:
我需要计算从 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 框架的一部分,但可以独立使用,您无需安装整个框架即可使用它。如果在您的 PHP 中安装了 bcmath 扩展,它可以使用 1901 年以后的日期。来自 Zend_date 的theory of operation:
这只是可能的,因为 Zend_Date 不限于 UNIX 时间戳或整数值。 BCMath 扩展需要支持超出格林威治标准时间 1901 年 12 月 13 日星期五 20:45:54 至格林威治标准时间 2038 年 1 月 19 日星期二 03:14:07 范围之外的极大日期。此外,由于浮点数据类型和舍入的固有限制,可能会出现微小的数学错误,除非使用 BCMath 扩展。
我喜欢推荐 Zend 组件,因为它们是经过精心修饰的高质量代码。不过,还有其他解决方案,例如使用mySQL date functions。
【讨论】:
我会写一个自定义方法。
PHP 日期函数基于纪元(1969 年),因此不会有太多帮助。
如果你只看年份,那就是简单的数学
较高年份 - 较早年份 = 年份 年 / 10 = 几十年。
如果您的意思是从 01-10、11-20 偶数的几十年,那么您可以做一些四舍五入。 (将早期日期向上取整,后期向下取整到最接近的 10。
【讨论】: