Recherche…


Comment définir le fuseau horaire dans CodeIgniter

Placer date_default_timezone_set('Asia/Kolkata'); sur config.php ci-dessus l'URL de base fonctionne également.

Liste PHP des fuseaux horaires pris en charge

application / config.php

<?php

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

date_default_timezone_set('Asia/Kolkata');

Une autre façon que j'ai trouvée utile est de définir un fuseau horaire pour chaque utilisateur:

  • Créez un fichier MY_Controller.php .

  • Créez une colonne dans votre table user , vous pouvez la nommer fuseau horaire ou toute autre chose que vous souhaitez. Ainsi, lorsque l'utilisateur sélectionne son fuseau horaire, il peut être défini sur son fuseau horaire lors de la connexion.

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;
            }
        }
    }
}

Aussi, pour obtenir la liste des fuseaux horaires en PHP:

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

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

Une autre façon de définir le fuseau horaire dans le codeigniter

La définition du fuseau horaire dans Codeigniter en étendant la date de l'assistant est une autre solution. Pour ce faire, vous devez suivre l'activité en deux étapes suivante.

  1. Prolonger l'assistant de date avec la fonction suivante:
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. time_reference maintenant le fuseau horaire comme une valeur de time_reference de config.php comme: $config['time_reference'] = 'Asia/Dhaka';

Tout est réglé pour utiliser le fuseau horaire.

FYI: la liste de la liste des fuseaux horaires est ajoutée dans le premier exemple.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow