PHP Carbon的日历天数差异

3

我希望获得不同日历日期之间的天数。我想要找到与今天、昨天和明天对应的日期,并具有相对数字(0、-1、1)。

这里是一些基本测试:

\Carbon\Carbon::now() // Out: 2017-08-08 09:16 ...

// diffInDays()

\Carbon\Carbon::now()->diffInDays(\Carbon\Carbon::now()->addHour(1)) // output: 0
\Carbon\Carbon::now()->diffInDays(\Carbon\Carbon::now()->tomorrow()) // output: 0
\Carbon\Carbon::now()->diffInDays(\Carbon\Carbon::now()->addHour(23)) // output: 0
\Carbon\Carbon::now()->diffInDays(\Carbon\Carbon::now()->addHour(25)) // output: 1


// diffInWeekDays()

\Carbon\Carbon::now()->diffInWeekDays(\Carbon\Carbon::now()->addHour(1)) // output: 1
\Carbon\Carbon::now()->diffInWeekDays(\Carbon\Carbon::now()->tomorrow()) // output: 1
\Carbon\Carbon::now()->diffInWeekDays(\Carbon\Carbon::now()->addHour(23)) // output: 1
\Carbon\Carbon::now()->diffInWeekDays(\Carbon\Carbon::now()->addHour(25)) // output: 2

这两种方法似乎都是按照24小时的周期来计算天数。我希望通过“someMethod”得到的结果是:

\Carbon\Carbon::now()->someMethod(\Carbon\Carbon::now()->addHour(1)) // output: 0
\Carbon\Carbon::now()->someMethod(\Carbon\Carbon::now()->tomorrow()) // output: 1
\Carbon\Carbon::now()->someMethod(\Carbon\Carbon::now()->addHour(23)) // output: 1
\Carbon\Carbon::now()->someMethod(\Carbon\Carbon::now()->addHour(25)) // output: 1

有没有办法在Carbon中获得我需要的输出?
我已经在Carbon存储库中创建了一个相关问题:https://github.com/briannesbitt/Carbon/issues/990
非常感谢您的任何评论或帮助!
2个回答

5

由于diffInDays()方法是基于24小时计算的,因此您可以使用startOfDay()方法来欺骗它。

\Carbon\Carbon::now()->startOfDay()->diffInDays(\Carbon\Carbon::now()->addHours(23)->startOfDay(), false)

请注意 false 参数以获取负数天数。

哦,我的天啊!我找到了相同的解决方案并在Github上发布了它。它很好用!至少对我来说,它满足了我的需求。我开始怀疑Carbon中是否有任何本地方法可以解决这个问题... 谢谢! - XaviQV

2

看这个:

$date = <some_date>;

\Carbon\Carbon::now()->startOfDay()->diffInDays($date, false);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接