2013-07-02 16 views
5

Właśnie zdałem sobie sprawę DLACZEGO moja strona pokazuje teraz wszystkie zmienne datetime jako -1 godz. ... Używam Codeigniter po raz pierwszy! (Nigdy nie miałem tego problemu wcześniej)Ustawienia timezone strefy czasowej mysql ustawienia

Tak, mam włączone poniższy kod w moim głównym pliku index.php

/* 
|--------------------------------------------------------------- 
| DEFAULT TIMEZONE 
|--------------------------------------------------------------- 
| 
| Set the default timezone for date/time functions to use if 
| none is set on the server. 
| 
*/ 

if(! ini_get('date.timezone')) 
{ 
    date_default_timezone_set('GMT'); 
} 

Jednak to jeszcze pokazując jak -1 godziny, więc jestem zakładając muszę ustawić jakieś ustawienie domyślne dla MySQL ...

mam włączone poniższy wiersz kodu w moim modelu:

function __construct() 
    { 
     // Call the Model constructor 
     parent::__construct(); 
     $this->db->query("SET time_zone='+0:00'"); 
    } 

Nadal nie ma różnicy ... pomocy!

Mój kod to:

<h3><?=date('D, jS F @ g:ia', strtotime($row->datetime))?></h3> 

$ row-> zmienna datetime jest niczym więcej niż wartość kolumny DATETIME z mojej bazy danych MySQL. Echem zmienna zdaniem jest zawsze 1 godziny mniej niż wartość w mojej bazy danych ...

Mój kod model:

function coming_up() 
{ 
    $this->db->query("SET time_zone='+0:00'"); 
$query = $this->db->query('SELECT * FROM events1 WHERE datetime >= NOW() ORDER BY datetime LIMIT 2'); 
return $query->result(); 
} 

Odpowiedz

2

dodać te linie w swoim config file a następnie sprawdzić, czy działa dla mnie

$config['time_reference'] = 'gmt';# Default should be GMT 
date_default_timezone_set('UTC');# Add this line after creating timezone to GMT for reflecting 
+0

Bez zmian obawiam ... @Rohan Kumar – user2505513

+0

Sprawdź swój 'wstawić query' powinno wyglądają jak '$ this-> db-> query (" INSERT INTO TABLE SET time_zone = '+ 0:00' ");' –

+0

Patrz wyżej, edytowałem mój wpis, aby dołączyć mój kod zapytania @Rohan Kumar Still, no różnica! – user2505513

11

W config/autoload.php ustaw model, który będzie ładowany przy każdym ładowaniu strony. następnie wywołaj $ this-> db-> query ("SET time_zone = '+ 0:00'"); w tym modelu konstruktora.

konfiguracji/autoload.php

$ automatycznego ładowania [ 'Wzór'] = tablica ('default_model'); // ex "powiedzieć default_model"

W aplikacji/models, utwórz nowy plik modelu o nazwie "default_model.php" i dodaj poniższy kod.

application/models/default_model.php

klasa Default_model rozciąga CI_Model {

function __construct() 
{ 
    // Call the Model constructor 
    parent::__construct(); 
    $this->db->query("SET time_zone='+0:00'"); 
} 
    } 

Na każdej stronie obciążenia, to konstruktor zostanie wywołany i strefa czasowa mysql zostanie ustawiony na +0: ​​00.

+0

Jeśli chcesz zająć się DST, możesz załadować nazwaną strefę '$ this-> db-> query (" SET time_zone = 'America/Chicago' ");' ** note ** musisz ustawić strefy czasowe mysql [mysql_tzinfo_to_sql] (http://dev.mysql.com/doc/refman/5.1/en/mysql-tzinfo-to-sql.html) – zerodahero

+0

To jest fantastyczne, dziękuję! –

+0

Byłoby również dobrym pomysłem dodanie czegoś takiego jak 'date_default_timezone_set ('TIMEZONE_SET_FOR_DATABASE'); do aplikacji/config/config.php tuż poniżej linii' defined ('BASEPATH') LUB exit ('Brak bezpośredniego dostępu do skryptu. '); ' –

-4

Można go ustawić w pliku index.php w folderze projektu na górze i po <?php

<?php 
date_default_timezone_set('Asia/Bangkok'); 
Powiązane problemy