好吧,我想通了,做我想做的啞巴,但功能性的方式,和它的作品。
這裏是我的代碼:
$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個小時不同的話,那就是我下一次捕獲的東西。最後,我將最初的日期時間添加到它,並在合適的時區給我適當的時間。
這是醜陋的,但它的作品。
真是一團糟。這就是爲什麼所有的服務器和日期應該總是被配置/存儲爲UTC的原因。 – gview
我的服務器設置爲UTC,但我將日期存儲爲PST,因爲我以前從未需要使用時區。 –
如果你的日期時間字符串本身不包含時區,你應該能夠簡單地在你的'config/app.php'中改變''timezone'=>'UTC''聲明。這將指示Carbon/DateTime默認解釋該特定時區中的任何日期時間字符串,因此您不必每次都在所有Carbon實例上轉換時區(這會更改日期和/或時間)。 –