【问题标题】:Change the time zone in Codeigniter在 Codeigniter 中更改时区
【发布时间】:2011-08-24 05:16:54
【问题描述】:

我的项目托管在共享服务器上,我想更改 亚洲/加尔各答的时区。 我曾尝试使用 htaccess 文件设置时区,但失败了。

【问题讨论】:

  • 您可以更改和不能更改的内容因提供商而异,您可以在 php.ini 中进行更改,但我会先问他们。
  • 您的应用程序是否希望服务器在 GMT 上,并且您想知道如何使用 CodeIgniter 来正确显示基于此的时区?或者你想设置它,以便 PHP 本身在查询服务器时看到亚洲/加尔各答时间?
  • @robert 我希望 php 日期函数在我使用过日期函数的地方使用该设置
  • @Dagon 我无权访问 php.ini 文件 :(
  • 我假设您已经尝试将 php_value date.timezone "Asia/Kolkata" 放入您的 .htaccess 文件中?

标签: php codeigniter


【解决方案1】:

使用 CodeIgniter,设置时区的最佳位置是在主 index.php 文件中。它在您的项目结构中与 system/application/ 文件夹处于同一级别。

只需在文件中打开<?php标签后的第一行代码添加以下内容:

date_default_timezone_set('Asia/Kolkata');

这应该适用于您的所有 PHP 代码。

不要忘记,如果您使用的是数据库,那么数据库的时区也可能会有所不同。如果您使用的是 MySQL,则需要在打开数据库连接后立即执行 SET time_zone = "+05:30" 查询。

【讨论】:

    【解决方案2】:

    试试这个

    date_default_timezone_set('Asia/Kolkata');
    

    在您的 index.php 文件中。您不需要访问您的 php.ini 文件。

    【讨论】:

    • 我无权访问 php.ini 文件
    • 您可以从您的 scriptFile.php 文件本身运行它。不是来自 php.ini。
    【解决方案3】:

    另一个好的做法是将它放在 CI_Controller 类中,就在 __construct 函数中:

    public function __construct() {
        date_default_timezone_set( 'Asia/Kolkata' );
        self::$instance =& $this;
        // the rest of the code...
    

    【讨论】:

    • 这实际上是唯一的correct 方法,即使其他答案中提到的一切都有效。该协议不得以任何理由更改 codeigniter 的文件。在您自己的application/ 控制器中进行您需要的任何更改。干得好
    【解决方案4】:

    这样做

    $db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'ci',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE,
    'date_default_timezone_set' => 'Asia/Kolkata'
    );
    

    【讨论】:

    • 我已经在我的表(mysql)中使用了时间戳,使用这个设置有效果吗?我试过了,但我没有看到任何变化....我的服务器在新西兰,但我需要为英国设定时间。对于表中的任何插入记录,时间戳设置为新西兰的时间...如何将时间戳更改为英国时区。
    • 使用 date_default_timezone_set('Asia/Kolkata');在 config.php 的顶部。
    • 但它不会影响 mysql 表中的时间戳字段。只是它适用于 date() 而不是时间戳。有什么想法吗?
    【解决方案5】:

    是的,谢谢,我在我的控制器中尝试这样:

    if (!defined('BASEPATH'))
        exit('No direct script access allowed');
    /*
     * Description of Testime
     * @class Testing
     */
    
    class Testing extends CI_Controller {
    
        public function __construct() {
            parent::__construct();
            date_default_timezone_set('Asia/Jakarta');
        }
    
        public function index(){
            echo date('Y-m-d H:i:s');
        }
    }
    

    并且有效:)

    【讨论】:

      【解决方案6】:

      请在您的 Codeigniter 项目的 index.php 文件中添加以下代码

       datedefaulttimezoneset(‘Asia/Kolkata’); 
      

      或者您也可以使用 php.ini 文件进行更改。

      如需更多帮助,请访问http://www.tutorial-hub.com/top-interview-questions-and-answers-codeigniter-framework/

      【讨论】:

        【解决方案7】:
        date_default_timezone_set('Asia/Jakarta');
        

        将它放在 config.php 中。有效!

        【讨论】:

        • 您能否提供一些 cmets 说明为什么这(应该)有效?只是粘贴一些代码并没有真正的帮助。
        猜你喜欢
        • 2023-03-06
        • 2011-04-02
        • 2012-08-20
        • 1970-01-01
        • 1970-01-01
        • 2011-02-21
        • 2019-02-19
        • 2020-02-29
        • 2013-01-15
        相关资源
        最近更新 更多