2

我需要计算从 1708 到今天的 2 个日期之间的十年数 - 据我所知,限制是 PHP 本机函数中的 1970/1901。

任何人都可以建议吗?

谢谢!

4

3 回答 3

3

如果您的 PHP >= 5.3.0:

$before  = new DateTime('1708-02-02');
$decades = $before->diff(new DateTime())->y / 10;
于 2010-02-02T15:05:25.557 回答
2

你可以使用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 日期函数

于 2010-02-02T14:08:33.197 回答
0

我会写一个自定义方法。

PHP 日期函数基于纪元( 1969 ),因此不会有太多帮助。

如果你只看年份,那就是简单的数学

较高的年份 - 较早的年份 = 年份 / 10 = 几十年。

如果您的意思是从 01-10 到 11-20 的几十年,那么您可以进行一些舍入。(将早期日期向上取整,后期向下取整至最接近的 10。

于 2010-02-02T14:10:42.053 回答