Buscar..


Cómo configurar la zona horaria en CodeIgniter

Colocando date_default_timezone_set('Asia/Kolkata'); en config.php encima de la base URL también funciona.

Lista de PHP de zonas horarias soportadas

aplicación / config.php

<?php

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

date_default_timezone_set('Asia/Kolkata');

Otra forma que he encontrado útil es si desea establecer una zona horaria para cada usuario:

  • Crea un archivo MY_Controller.php .

  • Cree una columna en su tabla de user que puede nombrarle zona horaria o cualquier cosa que desee. De esa manera, cuando el usuario selecciona su zona horaria, puede configurarse en su zona horaria cuando inicia sesión.

aplicación / 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;
            }
        }
    }
}

Además, para obtener la lista de zonas horarias en PHP:

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

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

Otra forma de configurar la zona horaria en codeigniter

Establecer la zona horaria en Codeigniter extendiendo la ayuda de la fecha es una forma alternativa. Para hacer eso necesitas seguir la siguiente actividad de dos pasos.

  1. Extender la fecha ayudante con la siguiente función:
if ( ! function_exists('now'))
{
    /**
    * Get "now" time
    *
    * Returns time() based on the timezone parameter or on the
    * "time_reference" setting
    *
    * @param    string
    * @return    int
    */
    function now($timezone = NULL)
    {
        if (empty($timezone))
        {
            $timezone = config_item('time_reference');
        }
        if ($timezone === 'local' OR $timezone === date_default_timezone_get())
        {
            return time();
        }
        $datetime = new DateTime('now', new DateTimeZone($timezone));
        sscanf($datetime->format('j-n-Y G:i:s'), '%d-%d-%d %d:%d:%d', $day, $month, $year, $hour, $minute, $second);
        return mktime($hour, $minute, $second, $month, $day, $year);
    }
}
  1. Ahora configure la zona horaria como un valor de time_reference de config.php como: $config['time_reference'] = 'Asia/Dhaka';

Todo esto está configurado para usar la zona horaria.

Para su información: Lista de zonas horarias se agrega en el primer ejemplo.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow