gpt4 book ai didi

php - 为什么 carbon addMinutes 加法不好

转载 作者:搜寻专家 更新时间:2023-10-31 20:58:12 24 4
gpt4 key购买 nike

在 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

谁能看出我在 Carbon 处理中遗漏的明显信息?我很确定它与 Carbon 有关,因为我将上面的 array_map 重组为 foreach 并且使用相同的 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);

奇怪 - 现在开始是正确的,但结束仍然不正确(显示 2018-07-06 01:00:00)

最佳答案

看看这段代码:

return [
'start' => $base->addMinutes(150)->toDateTimeString(),
'end' => $base->addMinutes(190)->toDateTimeString()
]

在这两种情况下,您都在向 $base 添加时间,因此您要添加 150 分钟,然后再添加 190 分钟(因此总共 340 分钟)。尝试与 ->copy() 一起使用:

return [
'start' => $base->copy()->addMinutes(150)->toDateTimeString(),
'end' => $base->copy()->addMinutes(190)->toDateTimeString()
]

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);

给我以下内容:

Array ( [0] => Array ( [start] => 2018-07-05 21:50:00 [end] => 2018-07-05 22:30:00 ) )

关于php - 为什么 carbon addMinutes 加法不好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com