0

我正在研究 Cakephp 2.x .. 我遇到的问题与 cakephp 无关.. 所以场景是我有一个名为 settings 的页面,其中用户根据他的国家和数据库 i 设置他的时区我将时间以 gmt 格式存储在Userinfo表中,因此在 userinfo 表中,gmt 时间为

 5.00

现在在我的其他表中,我有一个名为datetime的字段,我在其中以这种格式存储日期时间

 2013-06-14 10:28:00

现在在我的视图页面上,我想用特定用户的 dateTime 显示数据......

我想要的是我想将格林尼治标准时间添加到这个日期时间,这样我就可以根据用户国家/地区获得最终的日期时间......希望你明白我想说的话......

4

3 回答 3

2

使用 Cake 的内置Timehelper。在您的控制器中添加助手,public $helpers = array('Time');然后在您的视图中:

$this->Time->format($format = NULL, $date, $default = false, $timezone = NULL)

在你的情况下,这将是:$this->Time->format('d-m-Y H:i', $data['data']['datetime'], NULL, $data['User']['timezone']);

祝你好运。:)

注意: 自 CakePHP 2.2 起,$format和的顺序发生了$date变化。我解释的方式适用于 CakePHP 2.2 或更高版本。

于 2013-08-05T17:01:17.293 回答
0
<?php
  $utc = gmdate("M d Y H:i:s"); // place your gmt timestamp here
  echo $utc."<br>"; 
  $offset = date('Z'); //gets offset from gmt
  echo $offset."<br>";
  $localtime = strtotime($utc) + $offset; // adjusts to localtime.
  echo date("M d Y H:i:s", $localtime);
?>
于 2013-08-05T15:58:49.377 回答
0
echo (new DateTime('2012-07-16 01:00:00 UTC')) 
           -> setTimezone(new DateTimeZone('GMT+8') )
           ->format('Y-m-d H:i:s');

将输出

2012-07-16 09:00:00
于 2016-04-22T08:35:35.240 回答