Carbon 返回错误的日期错误

Carbon returning the wrong date bug

我正在使用我的 Laravel 应用程序中的 php Carbon 包来处理我的日期。我在尝试生成日期(未来 x 天)时遇到了一些奇怪的结果

请看一下这段代码:

$start_date = Carbon::tomorrow('Europe/London');
$end_date = $start_date->addDays($tier->duration_days);
Log::debug('Carbon::now(): '.Carbon::now());
Log::debug('Carbon::tomorrow(Europe/London): '.Carbon::tomorrow('Europe/London'));
Log::debug('$start_date: '.$start_date);
Log::debug('$end_date: '.$end_date);

上面的代码将打印出以下调试行:

2017-04-17 21:46:31] local.DEBUG: Carbon::now(): 2017-04-17 21:46:31
[2017-04-17 21:46:31] local.DEBUG: Carbon::tomorrow(Europe/London): 2017-04-18 00:00:00 [2017-04-17 21:46:31] local.DEBUG: $start_date: 2017-05-16 00:00:00 [2017-04-17 21:46:31] local.DEBUG: $end_date: 2017-05-16 00:00:00

使用 Carbon::tomorrow() 将打印出正确的日期,但是使用 $start_time 技术上使用相同的函数 returns 会打印出错误的日期。 有人可以告诉我这里可能出了什么问题吗?

仅供参考,我在 config/app.php 文件中将 Europe/London 设置为我的时区。

$date->addDays 实际上并不是 return 添加天数的实例,它 return 是修改天数后的同一个实例(这有很大的不同)。

因此,您应该先将日期复制到新实例中,然后添加天数。

$start_date->copy()->addDays($tier->duration_days);