laravel - 使用 Carbon 更改时区

标签 laravel date datetime php-carbon

我有一个来自数据库的日期(类型日期):

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 小时。有没有办法避免这种情况并保持简单?

有什么想法吗?

最佳答案

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

$changeTimeZone =  \Carbon\Carbon::parse($operation->date_ini)->setTimezone('Asia/Dhaka')->format('H:i');

关于laravel - 使用 Carbon 更改时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69462732/

相关文章:

php - Laravel 如何在表上使用 forelse() ?

php - laravel 如何添加一对一关系

php - Eloquent:乘和加列,然后按结果排序

Java日期奇怪

java - 将 Joda LocalDate 或 java.util.Date 转换为当天开始时的 LocalDateTime

laravel - services.json 未能打开流 : Permission denied in Laravel 4

PHP 将日期添加到特定日期?

c - date 和 strftime 的时区从何而来?

android - 月、日的日期差异

javascript - 为什么我的 JavaScript 日期/时间对象在 Cloud Firestore 中存储为 map 而不是时间戳?