2016-04-20 17 views
0

基本的に私のテーブルでdatetime列を取得すると、ユーザーのタイムゾーンで日付と時刻ベースを調整したいと考えています。ユーザーが設定したタイムゾーンを使用

私はこのコードを持っていますが、動作するようには思えない、時間が私はすでにそのタイムゾーンを変更するにもかかわらず、変更することはありません:

public function getCreatedAtAttribute($datetime) { 
    $timezone = \Auth::user()->timezone; 

    $datetime = $this->asDateTime($value); 

    return $datetime->timezone($timezone); 
} 

助けてください。

答えて

0

date_default_timezone_set()を使用して、ユーザーのタイムゾーンを設定します。

public function getCreatedAtAttribute($datetime) { 
    $timezone = \Auth::user()->timezone; 

    //Call date_default_timezone_set function to set user timezone or whenever it appropieate 
    date_default_timezone_set($timezone); 

    $datetime = $this->asDateTime($value); 

    return $datetime->timezone($timezone); 
} 

更新:

またlaravel設定タイムゾーンを変更するConfig::set('app.timezone', $timezone)を使用しています。

+0

は、私はすでに、これらのセットアップを持っています。また私のオリジナルの日付は:2016-04-20 03:12:47です。タイムゾーン機能を使って結果をダンプすると、同じ日付になりました。結果は次のとおりです[created_at] => Carbon \ Carbon Object ( [date] => 2016-04-20 03:12:47.000000 [timezone_type] => 3 [timezone] =>アフリカ/ Accra ) –

0

Carbonライブラリ(これはLaravelの内部にあります)でユーザーの指定したタイムゾーンに変換できます。パッケージを追加またはインストールする必要はありません。

public function getCreatedAtAttribute($datetime) { 
    return $datetime->timezone(\Auth::user()->timezone)->format('Y-m-d H:i:s'); 
} 

から:このよう http://laraveldaily.com/timezone-settings-for-created_at-and-similar-fields/?utm_source=tuicool&utm_medium=referral

関連する問題