刚刚意识到为什么我的网站现在将所有日期时间变量显示为-1小时......我第一次使用Codeigniter! (之前从未遇到过这个问题)
所以,我在主index.php文件中包含了以下代码
/*
|---------------------------------------------------------------
| DEFAULT TIMEZONE
|---------------------------------------------------------------
|
| Set the default timezone for date/time functions to use if
| none is set on the server.
|
*/
if( ! ini_get('date.timezone') )
{
date_default_timezone_set('GMT');
}
然而,它仍然显示为-1小时,所以我假设我需要为MySQL设置某种默认设置......
我在我的模型中包含以下代码行:
function __construct()
{
// Call the Model constructor
parent::__construct();
$this->db->query("SET time_zone='+0:00'");
}
仍然没有区别......帮助!
我的代码是:
<h3><?=date('D, jS F @ g:ia', strtotime($row->datetime))?></h3>
$ row-&gt; datetime变量只不过是MySQL数据库中的DATETIME列值。视图中的回显变量总是比我的数据库中的值小1小时...
我的型号代码是:
function coming_up()
{
$this->db->query("SET time_zone='+0:00'");
$query = $this->db->query('SELECT * FROM events1 WHERE datetime >= NOW() ORDER BY datetime LIMIT 2');
return $query->result();
}
答案 0 :(得分:12)
在config / autoload.php中,设置要在每个页面加载时加载的模型。然后调用$ this-&gt; db-&gt; query(“SET time_zone ='+ 0:00'”);在那个模型构造函数中。
<强>配置/ autoload.php 强>
$ autoload ['model'] = array('default_model'); //对于ex,“说 default_model“
在应用程序/模型中,创建一个名为“default_model.php”的新模型文件,并添加以下代码。
<强>应用/模型/ default_model.php 强>
类Default_model扩展了CI_Model {
function __construct() { // Call the Model constructor parent::__construct(); $this->db->query("SET time_zone='+0:00'"); } }
在每次加载页面时,将调用此构造函数,并将mysql时区设置为+0:00。
答案 1 :(得分:2)
在config file
中添加这些行,然后检查,它对我有用
$config['time_reference'] = 'gmt';# Default should be GMT
date_default_timezone_set('UTC');# Add this line after creating timezone to GMT for reflecting
答案 2 :(得分:1)
CustomPainter
它将在我的项目中正常工作,并且我不使用任何新的默认模型。.如果您要使用全局解决方案,则可以使用自动加载某些模型。
答案 3 :(得分:1)
为 MySQL 设置默认时区: 转到:Your_Project/system/core/Model.php 然后更新这个函数:
public function __construct() {
$this->db->query("SET time_zone='YOUR_TIME_ZONE'");
}
为 PHP 设置 default_time_zone : 转到 Your_Project/index.php 然后在这里更新:
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
date_default_timezone_set('YOUR_TIME_ZONE');
答案 4 :(得分:0)
我喜欢Kumar提出的解决方案,但是,仅当在数据库中显示以UTC时间存储的日期时,我才需要全局设置。
在我的api模型中,我具有以下功能。
public function setDBTimeOffset(){
$dt = new DateTime();
$offset = $dt->format("P");
$result = $this->db->query("SET time_zone='$offset';");
return $result;
} # END FUNCTION setDBTimeOffset
首先从控制器中调用以下内容。
$this->api->setDBTimeOffset();
随后是对查询数据库的函数的调用。例如,我正在获取一些用户历史记录。
$data["viewData"]["allHistory"] = $this->api->getUserHistory("ALL", 0, 10000);
当我显示输出时,日期在我的时区中。我希望这可以在某个时间(无法抗拒)帮助某人。
答案 5 :(得分:-4)
您可以在项目文件夹中的index.php文件中设置它,然后在<?php
<?php
date_default_timezone_set('Asia/Bangkok');