web-dev-qa-db-ja.com

カーボンは今や間違っている

私はCarbon拡張機能の使用を開始したばかりです(これまでのところかなりすばらしいようです)が、Carbon::now()関数について混乱しています。ドキュメントによると、この関数はユーザーの現在のタイムゾーンの現在の時刻を反映しているように見えますが、GMTより1時間進んでいるようです。

つまりCarbon::now()は、PSTを使用しているときに2015-01-01 17:26:46と表示され、現在は2015-01-01 08:26:46です。

すべてのインスタンスについて、ユーザーのローカルタイムゾーンを検出して配置する必要がありますか?

何ができますか? (私はウェブサイトがユーザーの現地時間をどのように取得するかについて根本的な誤解をしているかもしれません)

12
ambe5960

これは、サーバーのタイムゾーンがユーザーのタイムゾーンと異なるためと考えられます。

これは次の原因で発生する可能性があります。

  • サーバーの設定ミス
  • サーバーの物理的な場所が別のタイムゾーンにある
  • プロバイダーのポリシーもこれを引き起こす可能性があります。プロバイダーが、世界中にあるすべてのサーバーで同じタイムゾーンで運用することを決定した場合、問題が発生します。

説明したように、サーバーのタイムゾーンは+1 GMTのCET(中央ヨーロッパ時間)のようです。

これを修正するには php.iniファイルのタイムゾーンを変更 (手順はリンクから):

  1. php.iniファイルを開きます
  2. Php.iniファイルの先頭に次のコード行を追加します。

date.timezone = "米国/中部"

または、US/Centralタイムゾーンを目的のタイムゾーンに置き換える必要があります ここで概要を示します 必要に応じてPHP別のタイムゾーンを使用します。

9
AStopher

CarbonはUTCベースであるため、単にCarbon::now()を実行すると、時刻がUTC形式で出力されます

都市または地域のdateTimeを正確に反映するには、タイムゾーンを指定する必要があります。

これを行うには2つの方法があります。次のいずれかを実行できます。

Carbon::now('PST') OR Carbon :: now( 'Continent/City') like (Carbon::now('America/Montreal') 例えば

11
Frank L

Config/app.phpでタイムゾーンを変更します

 'timezone' => 'YOUR TIME ZONE',
2
Rishi