PHP Carbon日历天数差异

时间:2017-08-08 07:35:09

标签: laravel php-carbon

我希望在日历日中有所不同。我想用相对数字(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 个答案:

答案 0 :(得分:3)

由于diffInDays()基于24小时,您可以使用startOfDay()方法进行操作

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

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

答案 1 :(得分:1)

检查一下:

$date = <some_date>;

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