php - 如何找到 2 个日期时间对象之间的天数差异作为日期?

标签 php mysql laravel datetime php-carbon

我的 MySQL 数据库中有一个日期时间字段。我正在使用 Laravel 并且 Carbon 库已经包含在内。我正在构建一个函数来将此日期时间字段与当前日期进行比较。目前,在 Carbon 中使用 diffInDays 函数时,结果如下:

Datetime field      | current time         | result
2016-09-13 23:59:59 | 2016-09-14 16:42:12  | 0
2016-09-13 12:05:59 | 2016-09-14 16:42:12  | 1
2016-09-12 23:59:59 | 2016-09-14 16:42:12  | 1
2016-09-12 12:05:59 | 2016-09-14 16:42:12  | 2

但是,我只想比较日期,所以我希望结果是:

Datetime field      | current time         | result
2016-09-13 23:59:59 | 2016-09-14 16:42:12  | 1
2016-09-13 12:59:59 | 2016-09-14 16:42:12  | 1
2016-09-12 23:59:59 | 2016-09-14 16:42:12  | 2
2016-09-12 12:05:59 | 2016-09-14 16:42:12  | 2

是否已经在 PHP/Carbon/其他库中为此预先构建了函数?

最佳答案

最简单的方法是使用 DateTimeImmutable,将两者的时间设置为午夜(例如),然后进行比较。这将使您获得想要的结果。

$start = new DateTimeImmutable ("20160101T1530", $dtz);
$stop = new DateTimeImmutable ("20160102T1300", $dtz);

// DateTimeImmutable returns new objects when modified.
$chkStart = $start->modify ("midnight");
$chkStop = $stop->modify ("midnight");

// Setting second flag to "true" to get absolute difference.
$diff = $chkStart->diff ($chkStop, true);

关于php - 如何找到 2 个日期时间对象之间的天数差异作为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39486119/

相关文章:

php - MYSQL可自定义加入和选择

php - 在 Laravel 5 中添加新的配置文件不起作用

php - 未定义索引 : on login (php)

php - 将字符串附加到自身, 'X' 次(其中 'x' 是变量)

php - MYSQL 如何确保行不会多次更新?

mysql - 添加一个子查询会使查询变慢一点,添加另一个子查询会使查询变慢

php - 使用 echo POTBACK 值回显输入字段

php - Laravel 5.3 Pagination 总页数

php - Laravel Horizo​​n 队列处理,但未收到预期结果

php - 如何限制刷新选项?