gpt4 book ai didi

php - 如何在不除以 86400 (60*60*24) 的情况下计算 php 中 2 个 unix 时间戳之间的间隔

转载 作者:可可西里 更新时间:2023-10-31 22:16:21 24 4
gpt4 key购买 nike

我有 2 个 unix 时间戳,我在亚太/奥克兰时区(GMT+12,DaylightSavings = GMT+13)

我想计算 2 个时间戳之间的天数间隔,其中一个在夏令时内,一个不在夏令时内。

我的示例日期是:

2009 年 2 月 7 日 (1233925200)2010 年 9 月 21 日 (1284985360)(不包括 21 日)看到这里说 591 天:http://www.timeanddate.com/date/durationresult.html?d1=7&m1=2&y1=2009&d2=21&m2=9&y2=2010

计算一下,这是我的时间戳(都是基于奥克兰00:00时间)

1284985360-1233925200 = 51060160
51060160 / 86400 = 590.974

是的,我需要 591。我不想使用“汇总”解决方案

是否有像 strtotime 这样的可靠方法,但用于计算日期间隔,最好不需要 php 5.3+ 最小值

编辑:需要澄清一下,我正在使用 STRTOTIME 来获取这些时间戳,我认为那是 UTC

EDIT2:我相信我已经找到了问题所在。虽然我的结束日期是 9 月 21 日,但我实际上是在使用 time() 来获取我的结束日期,而 time() 返回了错误的时间戳,也许它没有考虑 GMT+12,无论我将 time() 切换到strtotime(date('d M Y')) 它返回了正确的时间戳! Eureka 591 天

最佳答案

在计算差异之前计算两个时间戳的完整天数:

floor(1284985360 / 86400) - floor(1233925200 / 86400)

你的结果总是一个整数。

并且由于您正在使用 strtotime 获取这些时间戳,因此请指定时间 00:00:00+0000 以始终获取 86400 的倍数:

strtotime($str.' 00:00:00+0000')

关于php - 如何在不除以 86400 (60*60*24) 的情况下计算 php 中 2 个 unix 时间戳之间的间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com