我正在使用 Laravel 并拥有以下代码:
$date = now()->locale('es_ES');
$start_date = $date->isoFormat('D [de] MMMM [de] YYYY')
$start_time = $date->isoFormat('HH[H]hh')
$end_date = $date->addHours(3)->isoFormat('D [de] MMMM [de] YYYY')
$end_time = $date->addHours(3)->isoFormat('HH[H]hh')
这是输出
开始日期:2023 年 4 月 24 日
开始时间:21H09
结束日期:2023 年 4 月 25 日
结束时间:03H03
我希望结束日期和时间是这样的:
end_date:2023 年 4 月 25 日 结束时间:00H09
看起来增加了超过 3 小时,而且分钟数也不一样,这是怎么回事?谢谢
我想你正在寻找这样的东西:
$start = now()->locale('es_ES');
$end = $start->copy()->addHours(3);
$start_date = $start->isoFormat('D [de] MMMM [de] YYYY');
$start_time = $start->isoFormat('HH[H]hh');
$end_date = $end->isoFormat('D [de] MMMM [de] YYYY');
$end_time = $end->isoFormat('HH[H]hh');
如果你想要分钟,你需要
mm
而不是hh
,那么你应该复制日期并只添加一次小时:
$date = now()->locale('es_ES');
$start_date = $date->isoFormat('D [de] MMMM [de] YYYY');
$start_time = $date->isoFormat('HH[H]mm');
$end = $date->copy()->addHours(3);
$end_date = $end->isoFormat('D [de] MMMM [de] YYYY');
$end_time = $end ->isoFormat('HH[H]mm');
(请注意,
now()
正在创建一个可变的 Carbon
对象,切换到 CarbonImmutable
以拥有不可变也是一个选项)