Я создал простой помощник часового пояса для моего приложения CakePHP, используя различные примеры здесь, в Stack Overflow, который сохраняет зону пользователей против их пользовательской записи. например Европа/Лондон.Помощник часового пояса для 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 - Смотрите мое редактирование. –