Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP计算大范围的日期差_Php_Date_Datediff - Fatal编程技术网

用PHP计算大范围的日期差

用PHP计算大范围的日期差,php,date,datediff,Php,Date,Datediff,我需要计算从1708年到今天的两个日期之间的十年数——我所能收集到的限制是PHP本机函数中的1970/1901 有人能提供建议吗 谢谢 你可以用。它是Zend框架的一部分,但是可以独立使用,您不需要安装整个框架就可以使用它。如果PHP中安装了bcmath扩展,那么它可以处理1901年以后的日期。来自Zend_date的: 这是唯一可能的,因为Zend_日期不仅限于UNIX时间戳,也不限于整数值。BCMath扩展需要支持1901年12月13日星期五20:45:54 GMT到2038年1月19日星期

我需要计算从1708年到今天的两个日期之间的十年数——我所能收集到的限制是PHP本机函数中的1970/1901

有人能提供建议吗

谢谢

你可以用。它是Zend框架的一部分,但是可以独立使用,您不需要安装整个框架就可以使用它。如果PHP中安装了
bcmath
扩展,那么它可以处理1901年以后的日期。来自Zend_date的:

这是唯一可能的,因为Zend_日期不仅限于UNIX时间戳,也不限于整数值。BCMath扩展需要支持1901年12月13日星期五20:45:54 GMT到2038年1月19日星期二03:14:07 GMT范围之外的超大日期。由于浮点数据类型和舍入的固有限制,可能会出现额外的微小数学错误,除非使用BCMath扩展


我喜欢推荐Zend组件,因为它们是经过精心整理的高质量代码。不过,还有其他解决方案,例如使用。

我将编写一个自定义方法

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

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

较高年份-较早年份=年数 年/10=十年


如果你的意思是从1-10,11-20开始几十年,那么你可以做一些四舍五入。(向上舍入早期日期,向下舍入最接近的10。

如果PHP>=5.3.0:

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

我一直坚持5.2:-(-但知道这一点太好了!不幸的是,它必须是日期准确的。不过谢谢你的反馈!