yoy*_*oma 3 php arrays array-map php-carbon
在 Laravel 环境中,我有一组时间,我添加了几分钟,但它没有给我我所期望的结果。
在下面的array_map函数中发生了一些奇怪的addMinutes事情
$d = array_map(function ($date) {
$base = Carbon::parse($date['time']);
return [
'start' => $base->addMinutes(150)->toDateTimeString(),
'end' => $base->addMinutes(190)->toDateTimeString()
]
}, $dates);
Run Code Online (Sandbox Code Playgroud)
所以 150 分钟是 2 小时 30 分钟,190 分钟是 3 小时 10 分钟,所以我假设以下
2018-07-05 19.20.00 (+150 mins) -> start = 2018-07-05 21.50
(+190 mins) -> end = 2018-07-05 22.30
Run Code Online (Sandbox Code Playgroud)
我实际上得到了
2018-07-05 19.20.00 (+150 mins) -> start = 2018-07-05 21.30
(+190 mins) -> end = 2018-07-06 00.40
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到我在碳处理过程中遗漏的明显内容吗?我很确定这与 Carbon 有关,因为我将上面的内容重组array_map为 aforeach并得到了相同的结果addMinutes。
编辑:
我刚刚改编了这段代码,以便任何人通过将以下内容粘贴到phpio来帮助诊断
require 'Carbon/Carbon.php';
use Carbon\Carbon;
$dates[] = ['time' => '2018-07-05 19:20:00'];
$d = array_map(function ($date) {
$base = Carbon::parse($date['time']);
return [
'start' => $base->addMinutes(150)->toDateTimeString(),
'end' => $base->addMinutes(190)->toDateTimeString()
];
}, $dates);
print_r($d);
Run Code Online (Sandbox Code Playgroud)
奇怪 - 现在开始是正确的,但结束仍然不正确(显示 2018-07-06 01:00:00)
看一下这段代码:
return [
'start' => $base->addMinutes(150)->toDateTimeString(),
'end' => $base->addMinutes(190)->toDateTimeString()
]
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,您都会添加到$base,因此您会添加 150 分钟,然后再添加 190 分钟(因此总共 340 分钟)。尝试使用->copy():
return [
'start' => $base->copy()->addMinutes(150)->toDateTimeString(),
'end' => $base->copy()->addMinutes(190)->toDateTimeString()
]
Run Code Online (Sandbox Code Playgroud)
在 中使用以下代码phpio:
require 'Carbon/Carbon.php';
use Carbon\Carbon;
$dates[] = ['time' => '2018-07-05 19:20:00'];
$d = array_map(function ($date) {
$base = Carbon::parse($date['time']);
return [
'start' => $base->copy()->addMinutes(150)->toDateTimeString(),
'end' => $base->copy()->addMinutes(190)->toDateTimeString()
];
}, $dates);
print_r($d);
Run Code Online (Sandbox Code Playgroud)
给了我以下内容:
数组 ( [0] => 数组 ( [开始] => 2018-07-05 21:50:00 [结束] => 2018-07-05 22:30:00 ) )
| 归档时间: |
|
| 查看次数: |
4481 次 |
| 最近记录: |