我已經爲我的CakePHP應用程序構建了一個簡單的時區幫助程序,這裏使用了堆棧溢出的各種示例,這些示例將用戶區域保存在用戶記錄中。例如歐洲/倫敦。CakePHP的時區幫手
要查看幫手:http://pastebin.com/VGivwqHJ
當用戶登錄到應用程序,我救當他們登錄,這樣我可以顯示日誌列表給用戶出於安全原因的日期/時間。例如$ this-> user-> saveField('lastlogin',date('Y-m-d H:i:s'));
但是,該日期目前將拉服務器日期/時間。我怎樣才能利用用戶的時區來修改它?
我想:
$date = new DateTime(null, new DateTimeZone($user['User']['timezone']));
然後:$this->User->saveField('lastlogin', $date->date);
,但我只是得到空...
但是,如果我調試$日我收到例如:
object(DateTime) {
date => '2013-04-01 15:22:32'
timezone_type => (int) 3
timezone => 'Europe/London'
}
1.)我做錯了什麼?我如何從對象中提取日期時間?
2.)這是處理這個問題的好方法嗎?因爲這意味着我必須用此片段替換所有date()
調用以獲取用戶時間。因此,例如,如果在歐洲發佈了一些用戶在美國,而是因爲他們的本地時間用戶之後再使用它會顯示爲不同的
3)將不會在網站上的日期變得不匹配,可能看起來好像在美國之前。
我應該代替保存服務器時間,然後利用片段上方,以顯示其不同的用戶,所以所有的時間是相同的時區,但隨後相對於用戶的信息?
很酷,修復了第一個問題。接下來的兩個問題有什麼想法? – Cameron
@Cameron - 看我的編輯。 –