我已经使用 Stack Overflow 上的各种示例为我的 CakePHP 应用程序构建了一个简单的时区助手,它将用户区域保存在他们的用户记录中。例如欧洲/伦敦。
查看助手: http: //pastebin.com/VGivwqHJ
当用户登录应用程序时,我会保存他们登录的日期/时间,以便出于安全原因向用户显示日志列表。例如 $this->User->saveField('lastlogin', date('Ymd H:i:s'));
但是,该日期当前将拉取服务器日期/时间。如何利用用户的时区来修改它?
我试过:
$date = new DateTime(null, new DateTimeZone($user['User']['timezone']));
然后:$this->User->saveField('lastlogin', $date->date);
但我只是得到空......
但是,如果我调试 $date 我会得到例如:
object(DateTime) {
date => '2013-04-01 15:22:32'
timezone_type => (int) 3
timezone => 'Europe/London'
}
1.)我做错了什么?如何从对象中提取日期时间?
2.) 这是处理这个问题的好方法吗?因为这意味着我必须date()
用这个片段替换所有调用来获得用户的时间。
3.)网站上的日期不会不匹配,例如,如果欧洲用户在美国用户之后发布了一些内容,但由于使用了他们的当地时间,它会显示为不同,可能看起来好像在美国之前对方。
我应该改为保存服务器时间,然后使用上面的代码段以不同的方式向用户显示它,所以所有时间都是相同的时区,但随后相对于用户显示?