使用PHP计算具有大范围的日期差异

时间:2010-02-02 14:00:00

标签: php date datediff

我需要计算从1708到现在的两个日期之间的数十年 - 在PHP本机函数中,我可以收集的限制是1970/1901。

有人可以提供建议吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

如果你有PHP> = 5.3.0:

$before  = new DateTime('1708-02-02');
$decades = $before->diff(new DateTime())->y / 10;

答案 1 :(得分:2)

您可以使用Zend_Date。它是Zend Framework的一部分,但可以单独使用,您不需要安装整个框架来使用它。如果bcmath扩展已安装到PHP中,它可以使用超过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

答案 2 :(得分:0)

我会写一个自定义方法。

PHP日期函数基于时代(1969年),因此在那里没有太多帮助。

如果你只看几年的简单数学

更高年份 - 更早年份=年份 年/ 10 =几十年。

如果你的意思是几十年甚至是01-10,11-20那么你可以做一些四舍五入。 (提前结束日期,之后日期下降到最接近的10日。