Sök…


Hur man ställer in tidszonen i CodeIgniter

Placera date_default_timezone_set('Asia/Kolkata');config.php ovan bas-URL fungerar också.

PHP- lista över tidszoner som stöds

application / config.php

<?php

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

date_default_timezone_set('Asia/Kolkata');

Ett annat sätt som jag har hittat användbart är om du vill ställa in en tidszon för varje användare:

  • Skapa en MY_Controller.php fil.

  • Skapa en kolumn i din user så kan du namnge den tidszon eller vilken sak du vill. Så på det sättet, när användaren väljer sin tidszon, kan den ställas in på hans tidszon vid inloggning.

application / kärna / 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;
            }
        }
    }
}

För att få en lista över tidszoner i PHP:

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

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

Ett annat sätt att ställa in tidszon i kodignern

Att ställa in tidszonen i Codeigniter genom att förlänga datumhjälpen är ett alternativt sätt. För att göra det måste följa följande tvåstegsaktivitet.

  1. Förläng datumhjälpen med följande funktion:
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 nu tidszonen som ett värde på time_reference för config.php som: $config['time_reference'] = 'Asia/Dhaka';

Detta är inställt för att använda tidszon.

FYI: Lista över tidszonlista läggs till i det första exemplet.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow