2017-08-24 51 views
1

我試圖找到我怎麼能存儲在我的數據庫的時間值轉換爲「YYYY-MM-DD HH-MM-SS」一種解決辦法,並給它的時區「美洲/洛杉磯。Laravel碳如何更改時區,而不改變小時

如果更改時區,碳會自動減去的時間,這是從UTC更改時間PST時會發生什麼,但在我的DB的時間設置爲PST時間爲7個小時。例如,我希望時間是今天上午10點,但它會改變時區,碳會將它轉換爲今天凌晨3點。

我怎樣才能使它在時區被改爲PST,但仍保持時間上午10點?我需要一個API調用的時區,這就是爲什麼我需要這個想法。

+0

真是一團糟。這就是爲什麼所有的服務器和日期應該總是被配置/存儲爲UTC的原因。 – gview

+0

我的服務器設置爲UTC,但我將日期存儲爲PST,因爲我以前從未需要使用時區。 –

+0

如果你的日期時間字符串本身不包含時區,你應該能夠簡單地在你的'config/app.php'中改變''timezone'=>'UTC''聲明。這將指示Carbon/DateTime默認解釋該特定時區中的任何日期時間字符串,因此您不必每次都在所有Carbon實例上轉換時區(這會更改日期和/或時間)。 –

回答

0

好吧,我想通了,做我想做的啞巴,但功能性的方式,和它的作品。

這裏是我的代碼:

 $dt = Carbon::parse($request->ShootDateTime)->timezone('America/Los_Angeles'); 
     $toDay = $dt->format('d'); 
     $toMonth = $dt->format('m'); 
     $toYear = $dt->format('Y'); 
     $dateUTC = Carbon::createFromDate($toYear, $toMonth, $toDay, 'UTC'); 
     $datePST = Carbon::createFromDate($toYear, $toMonth, $toDay, 'America/Los_Angeles'); 
     $difference = $dateUTC->diffInHours($datePST); 
     $date = $dt->addHours($difference); 

我得到我想要將轉換爲一個時區,並分析它,並改變時區的時間。然後我得到日,月和年,並創建2個不同的日期,兩者都將讀作00:00:00,但由於它們在這種情況下相隔7小時,所以它們只能是00:00: 00如果他們有7個小時不同的話,那就是我下一次捕獲的東西。最後,我將最初的日期時間添加到它,並在合適的時區給我適當的時間。

這是醜陋的,但它的作品。