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

发布于 2024-08-20 03:51:15 字数 96 浏览 7 评论 0原文

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

有人可以建议吗?

谢谢!

I need to calculate the number of decades between 2 dates possible spanning form 1708 until today - the limitations are as far as I can gather are 1970/1901 within PHP native functions.

Can anyone advise?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

入画浅相思 2024-08-27 03:51:15

如果您的 PHP >= 5.3.0:

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

If you have PHP >= 5.3.0:

$before  = new DateTime('1708-02-02');
$decades = $before->diff(new DateTime())->y / 10;
情魔剑神 2024-08-27 03:51:15

您可以使用 Zend_Date。它是 Zend Framework 的一部分,但可以独立使用,您无需安装整个框架即可使用它。如果您的 PHP 中安装了 bcmath 扩展,它可以处理 1901 年之后的日期。来自 Zend_date 的操作理论

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

我喜欢推荐 Zend 组件,因为它们是精心修饰的高质量代码。不过,还有其他解决方案,例如使用 mySQL 日期函数

You could use Zend_Date. It's part of the Zend Framework but can be used standalone, you don't need to install the whole framework to use it. It can work with dates beyond 1901 if the bcmath extension is installed into your PHP. From Zend_date's theory of operation:

This was only possible, because Zend_Date is not limited to UNIX timestamps nor integer values. The BCMath extension is required to support extremely large dates outside of the range Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. Additional, tiny math errors may arise due to the inherent limitations of float data types and rounding, unless using the BCMath extension.

I like to recommend Zend components because they are well-groomed, high-quality code. There are other solutions to this, though, for example using the mySQL date functions.

铁憨憨 2024-08-27 03:51:15

我会写一个自定义方法。

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

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

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

如果您指的是偶数 01-10、11-20 的几十年,那么您可以进行一些四舍五入。 (较早的日期向上舍入,较晚的日期向下舍入到最接近的 10。

I would write a custom method.

PHP date functions are based on the epoch ( 1969 ) so there won't be much help there.

If your just looking at years that is simple math

higher year - earlier year = years
years / 10 = decades.

If you mean decades from an even 01-10, 11-20 then you could do some rounding. (round early date up, later date down to nearest 10.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文