В среде 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);
Итак, 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
Я на самом деле получаю
2018-07-05 19.20.00 (+150 mins) -> start = 2018-07-05 21.30
(+190 mins) -> end = 2018-07-06 00.40
Может ли кто-нибудь увидеть очевидное, что я скучаю по обработке углерода? Я совершенно уверен, что это связано с углеродом, так как я реструктурировал array_map
в foreach
и получил те же результаты с тем же addMinutes
.
Edit:
Я только что адаптировал этот код для всех, чтобы помочь в диагностике, вставив приведенное ниже в 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);
WEIRD - теперь начало правильное, но конец все еще неправильный (отображается 2018-07-06 01:00:00)