【问题标题】:How to set time zone in codeigniter?如何在codeigniter中设置时区?
【发布时间】:2015-09-27 08:37:21
【问题描述】:

我在一个使用 codeigniter 的 php 项目中工作。请告诉我为 php 和 mysql 设置时区的全局方法是什么。我可以在哪个文件中设置它。我想设置它没有 php.ini 和 .htaccess 文件。

目前我在每个条目之前都使用这个 -:

date_default_timezone_set("Asia/Kolkata");
$time =  Date('Y-m-d h:i:s');

【问题讨论】:

标签: php codeigniter


【解决方案1】:

将此date_default_timezone_set('Asia/Kolkata'); 放在基本 url 上方的 config.php 上也可以

PHPList of Supported Time Zones

application/config/config.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

date_default_timezone_set('Asia/Kolkata');

我发现使用 full 的另一种方法是,如果您希望为每个用户设置一个时区

创建一个 MY_Controller.php

在您的用户表中创建一个列,您可以将其命名为时区或任何您想要的名称。这样当用户选择他的时区时,可以在登录时设置为他的时区。

application/core/MY_Controller.php

<?php

class MY_Controller extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->set_timezone();
    }

    public function set_timezone() {
        if ($this->session->userdata('user_id')) {
            $this->db->select('timezone');
            $this->db->from($this->db->dbprefix . 'user');
            $this->db->where('user_id', $this->session->userdata('user_id'));
            $query = $this->db->get();
            if ($query->num_rows() > 0) {
                date_default_timezone_set($query->row()->timezone);
            } else {
                return false;
            }
        }
    }
}

也可以在php中获取时区列表

 $timezones =  DateTimeZone::listIdentifiers(DateTimeZone::ALL);

 foreach ($timezones as $timezone) 
 {
    echo $timezone;
    echo "</br>";
 }

【讨论】:

  • 这在一些愚蠢的共享主机上不起作用,因为他们禁用了它,因此用户无法使用 date_default_timezone_set 更改时区,要更改它,您必须升级您的托管计划,这将贵。小心你购买的主机可能会适得其反。
  • 感谢它在 base_path 定义后添加 date_default_timezone_set('Asia/Kolkata'); 对我有用
【解决方案2】:

如果您在整个项目中寻找全局设置时区,那么您可以设置它 CI application/config.php 文件

$config['time_reference'] = 'Asia/Dubai';

【讨论】:

  • CI 4 结构中有 3 个 Config.php 文件,没有路径 /application 。您指的是哪一个?
【解决方案3】:

将此行添加到 codeigniter 文件夹的主 index.php

date_default_timezone_set('Asia/Kolkata');

【讨论】:

    【解决方案4】:

    你可以试试这个:

    date_default_timezone_set('Asia/Kolkata');
    

    application/config.phpapplication/autoload.php

    看起来是这样的:

    <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    date_default_timezone_set('Asia/Kolkata');
    

    它对我来说很好,我认为这是在 codeignitor 中定义 DEFAULT TIMEZONE 的最佳方式

    【讨论】:

    • Bluehost 我在 application/autoload.php 中尝试过,它对我有用,我在 config.php 但没有用。这个date_default_timezone_set('Asia/Kolkata);
    【解决方案5】:

    将此行添加到应用程序文件夹中的autoload.php:

    $autoload['time_zone'] = date_default_timezone_set('Asia/Kolkata');
    

    【讨论】:

    • Bluehost 网络主机中,我在 application/autoload.php 中尝试过,它对我有用,这 date_default_timezone_set('Asia/Kolkata);
    【解决方案6】:

    如描述here

    1. 打开您的 php.ini 文件(查找)

    2. 在文件顶部添加以下代码行:

      date.timezone = "US/Central"

    3. 前往phpinfo.php验证更改

    【讨论】:

      【解决方案7】:

      将它添加到您的 index.php 文件中,它将适用于您的整个网站

      if ( function_exists( 'date_default_timezone_set' ) ) {
          date_default_timezone_set('Asia/Kolkata');
      }
      

      【讨论】:

      • 如果一些愚蠢的共享主机在php.ini中禁用它来更改时区,这个功能将毫无用处。
      【解决方案8】:

      将它添加到您的 project/application/config/config.php 文件中,它将适用于您的整个站点。

      date_default_timezone_set('Asia/Kolkata');
      

      【讨论】:

        【解决方案9】:

        在 application/config 文件夹中,获取文件 config.php 并检查以下内容:

        $config['time_reference'] = '';

        将值更改为您的首选时区。 例如将时区设置为肯尼亚内罗毕: $config['time_reference'] = '非洲/内罗毕';

        【讨论】:

          【解决方案10】:

          把它放在config/config.php,它将适用于整个应用程序或codeigniter的index.php

          【讨论】:

            【解决方案11】:

            将其添加到您的 project/index.php 文件中,它将适用于您的整个网站。

            date_default_timezone_set('Asia/kabul');

            【讨论】:

            • 对您的答案进行一些细微的编辑应该使其更易于阅读和理解。我认为您想说“将date_default_timezone_set('Asia/kabul'); 添加到您的project/index.php 文件中”。请在必要时使用代码标签,它使帖子更易于阅读。在这种情况下,您能否解释一下为什么使用“'Asia/kabul”而不是“Asia/Kolkata”——这种变化有什么意义吗?
            【解决方案12】:

            如何在 CodeIgniter 4 中设置默认时区

            浏览并编辑

            /app/Config/App.php
            

            在第 103 行你会发现

            public $appTimezone = 'America/Chicago';
            

            您可以将其更改为支持的时区列表中的任何可用时区

            http://php.net/manual/en/timezones.php

            【讨论】:

              【解决方案13】:

              在 CI4 中,您可以在项目根目录中使用 .env 文件(手动创建)。参考Codeigniter4 environement variables

              app.appTimezone = "Asia/Kolkata"
              

              【讨论】:

                【解决方案14】:

                您可以在 application/autoload.php

                中找到“time_zone”字符串
                $autoload['time_zone'] = date_default_timezone_set('America/Toronto'); 
                

                这对我有用。 谢谢。

                【讨论】:

                  猜你喜欢
                  • 2016-10-05
                  • 1970-01-01
                  • 2013-06-29
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-11-21
                  • 2015-06-01
                  • 2014-11-16
                  • 2019-10-19
                  相关资源
                  最近更新 更多