2017-08-24 16 views
1

私のデータベースに格納されているdatetimeを 'yyyy-mm-dd HH-mm-ss'としてどのように変換でき、アメリカ/ロサンゼルス。Laravel Carbon時間を変更せずにタイムゾーンを変更する方法

私がタイムゾーンを変更した場合、Carbonはその時間から7時間を自動的に減算します。これはUTCからPSTに時間を変更したときの動作ですが、DBの時間はPST時間に設定されます。たとえば、今日は午前10時にしますが、タイムゾーンを変更すると、Carbonは今日3時にそれを変換します。

タイムゾーンをPSTに変更するにはどうすればよいですか?ただし、午前10時にも時刻を保持しますか?私はAPIコールのタイムゾーンが必要なので、これを理解する必要があります。

+0

どのような混乱。このため、すべてのサーバーと日付を常にUTCとして構成/格納する必要があります。 – gview

+0

私のサーバーはUTCに設定されていますが、以前はタイムゾーンを使用する必要がないため、PSTとして日付を保存しました。 –

+0

あなたの日時文字列自体にタイムゾーンが含まれていない場合は、あなたの 'config/app.php'で''timezone '=>' UTC''宣言を変更するだけです。これはCarbon/DateTimeに、デフォルトでその特定のタイムゾーン内の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:もし7時間違うなら、それは私が次に捉えるものです。最後に、私は最初の日時をとり、それに相違を加えて、適切な時間帯に適切な時間を与えます。

醜いですが、機能します。

関連する問題