2014-09-13 25 views
1

我想知道我是否可以將IST用於我的laravel應用程序,因爲我的應用程序用於該區域,默認時間戳()值不起作用?如何處理?還是不可能做到這一點?timestamps()爲拉拉維爾不同地區?

+1

爲什麼不使用UTC? – lxg 2014-09-13 13:45:48

+0

對不起,我沒有太多的時區的經驗,但事情是我想要在IST的時間,以前我用代碼點火器做轉換成IST,但我不知道如何做相同的laravel – avinashizhere 2014-09-13 13:50:15

+1

好的,比接受我的建議...在內部使用日期/時間信息作爲UTC。當用戶輸入位於不同的時區時(例如,通過提交沒有時區的日期隱式地),將其轉換爲UTC。如果您需要在當地時間顯示日期,請將其從UTC轉換爲該時間。這將爲您節省大量的麻煩。 – lxg 2014-09-13 13:52:40

回答

1

@lxg正確:在數據庫中以UTC存儲您的時間。這樣做會讓您更容易地將您的時間轉換爲來自不同時區的時間,而無需擔心夏天時間是否應用等。

將它們轉換,只需添加accessors到您的模型自動改變你的數據時,它被訪問:

// app/models/SomeModel.php 
public function getCreatedAtAttribute($value) 
{ 
    return Carbon::createFromTimestamp(strtotime($value)) 
     ->timezone('Asia/Mumbai') 
     ->toDateTimeString() 
    ; 
} 

這允許你做兩件事情:

  1. 這將是易於更改時區而不會更改任何您目前存儲的數據
  2. 您可以引入邏輯來確定要轉換的時區而不是對其進行硬編碼(例如,如果您存儲用戶特定的時區,則可以輕鬆地在當地時區顯示時間信息)。

這些當然只是一個subset of the benefits,你得到的時間存儲在UTC時間。