我正在cakepp 2.2上构建一个web应用程序。我是cakepp的新手,从未使用过。。问题是我想显示网站的浏览时间。。例如,如果有人在澳大利亚查看我的网站,他可以根据自己的国家查看时间。我想显示单独的日期和时间。。不想合并时间和日期
我现在在做什么
在AppController中,我已经完成了这个
public function beforeRender(){
if ($this->Auth->login() || $this->Auth->loggedIn()) {
App::uses('CakeTime', 'Utility');
}}
不知道如何回声以及
我们可以使用数据库找到一个客户端位置,为此我们需要使用一些api,例如我使用了主机api。
控制器代码:
$clientIpAddress = $this->request->clientIp();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.hostip.info/get_html.php?ip=$clientIpAddress&position=true");
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$data将返回以下示例:Country: UNITED STATES (US) City: Aurora, TX Latitude: 33.0582 Longitude: -97.5159 IP: 12.215.42.19
所以你从这个$数据中得到了位置。
按如下方式使用视图中的文件:
$this->Time->format('F jS, Y h:i A',date('M d, Y h:i:s'), null,'Aurora, TX');
但不要忘记在会话中写入城市名称、ip地址值,因此无需在每次为单个用户加载页面时发送curl请求。只是第一次找到位置和ip地址并写入会话,然后使用它
管理时间的一种简单方法是将所有日期和时间保存为GMT+0或UTC。取消注释d ate_default_timezone_set('UTC'); in app/Config/core.php
行,以确保应用程序的时区设置为GMT+0。
接下来,将时区字段添加到用户表中,并进行必要的修改,以允许用户设置时区。既然我们知道了登录用户的时区,我们就可以使用time Helper:更正帖子上的日期和时间
echo $this->Time->format('F jS, Y h:i A', $post['Post']['created'], null, $user['User']['time_zone']);
前提条件是您应该知道用户的时区,如果您为每个注册用户存储时区会更好。
如果你不想用作注册用户,你也可以跟踪并使用一些第三方服务来从IP地址提供时区,如ip2位置