0

我有一个来自数据库的日期(输入日期):

2018-08-25

这个日期是法国时区。

当我做:

    $from = Carbon::parse("2018-08-25", 'Europe/Paris');
    $from->timezone('UTC');
    dd($from);

我得到:

  date: 2018-08-24 22:00:00.0 UTC (+00:00)

这就是我想要的

但是当我使用数据库中的字段时:

    $operation = Operation::findOrFail($request->operation);
    $from = Carbon::parse($operation->date_ini, 'Europe/Paris');
    $from->timezone('UTC');
    dd($from);

我得到:

date: 2018-08-25 00:00:00.0 UTC (+00:00)

在我的数据库中,字段保存为 : 2018-08-25,所以从字面上看,它的意思是2018-08-25 UTC。所以结果是一致的。但我不确定如何处理它以获得我想要的东西。这意味着我必须将我的日期像日期时间一样存储在数据库中,以便我可以将其存储在 UTC 中,时间减少 1 或 2 小时。有没有办法避免这种情况并保持简单?

任何想法 ?

4

2 回答 2

0

我使用以下方法解决了它:

$from = Carbon::parse($operation->date_ini)->shiftTimezone('Europe/Paris');;

shiftTimezone更改时区而不更改日期。所以,它对我有用!

于 2021-10-06T09:21:03.960 回答
0

如果您在现有的 Carbon 实例上调用 setTimezone(),它会将日期/时间更改为新的时区,例如

$changeTimeZone =  \Carbon\Carbon::parse($operation->date_ini)->setTimezone('Asia/Dhaka')->format('H:i');
于 2021-10-07T01:55:20.383 回答