如何在Cakephp中根据国家时区显示时间



我正在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位置

相关内容

  • 没有找到相关文章

最新更新