【发布时间】:2013-04-03 15:04:19
【问题描述】:
我使用 Stack Overflow 上的各种示例为我的 CakePHP 应用程序构建了一个简单的 Timezone 助手,它将用户区域保存在他们的用户记录中。例如欧洲/伦敦。
查看助手: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); 但我只是得到空...
但如果我调试 $date 我会得到例如:
object(DateTime) {
date => '2013-04-01 15:22:32'
timezone_type => (int) 3
timezone => 'Europe/London'
}
1.) 我做错了什么?如何从对象中提取日期时间?
2.) 这是处理这个问题的好方法吗?因为这意味着我必须用这个 sn-p 替换所有 date() 调用来获得用户时间。
3.) 网站上的日期不会变得不匹配,例如,如果欧洲的用户在美国的用户之后发布了某些内容,但由于使用了他们的当地时间,它会显示为不同的,可能看起来好像在美国同行之前。
我是否应该改为保存服务器时间,然后使用上面的 sn-p 以不同的方式向用户显示它,所以所有时间都是相同的时区,然后相对于用户显示? p>
【问题讨论】: