使用PHP Carbon在日历日中进行比较



我想在日历日中获得差异。我想用相对数字(0、-1、1(找出与今天、昨天和明天对应的日期。

以下是一些基本测试:

CarbonCarbon::now() // Out: 2017-08-08 09:16 ...
// diffInDays()
CarbonCarbon::now()->diffInDays(CarbonCarbon::now()->addHour(1)) // output: 0
CarbonCarbon::now()->diffInDays(CarbonCarbon::now()->tomorrow()) // output: 0
CarbonCarbon::now()->diffInDays(CarbonCarbon::now()->addHour(23)) // output: 0
CarbonCarbon::now()->diffInDays(CarbonCarbon::now()->addHour(25)) // output: 1

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

这两种方法似乎都以 24 小时为周期计算天数。我想通过"someMethod"得到什么:

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

有没有办法在 Carbon 中获得我需要的输出?

我在这里的碳存储库中创建了一个相关问题:https://github.com/briannesbitt/Carbon/issues/990

任何评论或帮助将不胜感激!

由于diffInDays()是基于 24 小时,因此您可以使用startOfDay()方法进行欺骗

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

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

看看这个:

$date = <some_date>;
CarbonCarbon::now()->startOfDay()->diffInDays($date, false);

最新更新