簡體   English   中英

Cakephp 3 - 將時間從本地時區轉換為 UTC

[英]Cakephp 3 - convert time from local timezone to UTC

修補實體時,我對正確的時區有疑問。 我的帖子請求如下所示:

   [
    'event_date' => '11.07.2019',
    'start_time' => '15:00',
    'end_time' => '16:00'
   ]

在我的表單中,我有一個日歷和兩個字段,用戶可以在其中選擇開始和結束時間。 現在這些值是用戶的時區。 我想要的是將這些值轉換為 UTC 並將它們與我的實體一起保存,該實體具有兩個DATETIME和一個DATE字段。

為了在沒有任何驗證錯誤的情況下正確保存它,我有以下代碼用於在修補前修改數據:

$event_date = new \DateTime($data['event_date']);

$start_time = new \DateTime($data['start_time']);
$end_time = new \DateTime($data['end_time']);

$start_time->setDate($event_date->format('Y'), $event_date->format('m'), $event_date->format('d'));
$end_time->setDate($event_date->format('Y'), $event_date->format('m'), $event_date->format('d'));

$data['start_time'] = $start_time;
$data['end_time'] = $end_time;

$data['event_date'] = $event_date;

但是正如您從調試中看到的那樣,它轉換錯了。 因為我在歐洲時區,所以應該少2 小時

[
    'event_date' => object(DateTime) {
        date => '2019-07-11 00:00:00.000000'
        timezone_type => (int) 3
        timezone => 'UTC'
    },
    'start_time' => object(DateTime) {
        date => '2019-07-11 15:00:00.000000'
        timezone_type => (int) 3
        timezone => 'UTC'
    },
    'end_time' => object(DateTime) {
        date => '2019-07-11 16:00:00.000000'
        timezone_type => (int) 3
        timezone => 'UTC'
    }
]

我這樣配置我的引導程序:

Time::setToStringFormat('d.m.Y H:i');
Time::setJsonEncodeFormat('d.m.Y H:i');

FrozenTime::setToStringFormat('d.m.Y H:i');
FrozenTime::setJsonEncodeFormat('d.m.Y H:i');

Date::setToStringFormat('d.m.Y');
Date::setJsonEncodeFormat('d.m.Y');

FrozenDate::setToStringFormat('d.m.Y');
FrozenDate::setJsonEncodeFormat('d.m.Y');


Type::build('time')
    ->useImmutable();
Type::build('date')
    ->useImmutable();

Type::build('datetime')
    // ->useImmutable()
    ->useLocaleParser()
    ->setLocaleFormat('d.m.Y H:i:ss');

有人可以在這里幫助我嗎? 我有點困惑...

好吧,您根本沒有使用 Cake 中的 Date 和 DateTime 對象: \\DateTime這意味着它是普通的 php DateTime對象。

修復它並使用正確的對象,然后看看會發生什么。 還要確保您正確配置了默認時區。 讀一讀: https : //book.cakephp.org/3.0/en/core-libraries/time.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM