gpt4 book ai didi

php - Nesbot Carbon diffInHours 的奇怪结果

转载 作者:行者123 更新时间:2023-12-04 00:55:12 26 4
gpt4 key购买 nike

我正在为另一个关于 SO 的问题做一些修补。 Carbon 的 diffInHours 有一些奇怪的行为。 future 时间的差异与过去时间的差异不同。这是我的修补程序命令和返回值:

>>> \Carbon\Carbon::now()->diffInHours(\Carbon\Carbon::now()->addHours(3))
=> 3
>>> \Carbon\Carbon::now()->addHours(3)->diffInHours(\Carbon\Carbon::now())
=> 2
>>> \Carbon\Carbon::now()->addHours(3)->diffInHours(\Carbon\Carbon::now())
=> 2
>>> \Carbon\Carbon::now()->addHours(3)->diffInHours(\Carbon\Carbon::now())
=> 2
>>> \Carbon\Carbon::now()
=> Carbon\Carbon @1595427497 {#4431
date: 2020-07-22 14:18:17.952594 UTC (+00:00),
}

有没有人知道是什么导致了这种行为?

最佳答案

\Carbon\Carbon::now()->addHours(3)->diffInHours(\Carbon\Carbon::now();

让我们分解它以弄清楚发生了什么:

1- 你得到代表现在的日期时间。

2- 你加了 3 个小时。结果将是现在 + 3 小时。

3-你得到 diffInHours 与“现在”(女巫与第一个“现在”之后的几分之一秒不同)女巫将是 2.9999999180556

4- diffInHours 向下舍入结果 ( as in doc ),结果将为 2 ..

如果你想在不舍入的情况下获得真正的差异,你可以使用 floatDiffInRealHours,它会给你 2.9999999180556

问题是调用两个\Carbon\Carbon::now() 之间的延迟。如果您使用复制的 Carbon 实例,您可以看到没有问题:

>>> $now = \Carbon\Carbon::now()
=> Carbon\Carbon @1595429110 {#4367
date: 2020-07-22 14:45:10.767156 UTC (+00:00),
}
>>> $threeHoursFromNow = $now->copy()->addHours(3)
=> Carbon\Carbon @1595439910 {#4428
date: 2020-07-22 17:45:10.767156 UTC (+00:00),
}
>>> $now->diffInHours($threeHoursFromNow)
=> 3
>>> $threeHoursFromNow->diffInHours($now)
=> 3

关于php - Nesbot Carbon diffInHours 的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63036550/

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