Codeigniter fuseau horaire paramètres mysql
Viens de réaliser POURQUOI mon site est maintenant en montrant tous datetime variables -1, rh... j'utilise Codeigniter pour la première fois! (Jamais eu ce problème avant)
Donc, j'ai inclus le code suivant dans mon principal index.php fichier
/*
|---------------------------------------------------------------
| 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');
}
Cependant, il est toujours à l'affiche -1 hr, donc je suppose que je dois mettre une sorte de paramètre par défaut pour MySQL...
J'ai inclus la ligne de code suivante dans mon modèle:
function __construct()
{
// Call the Model constructor
parent::__construct();
$this->db->query("SET time_zone='+0:00'");
}
Toujours pas de différence... à l'Aide!
Mon code est:
<h3><?=date('D, jS F @ g:ia', strtotime($row->datetime))?></h3>
L' $row->variable datetime est rien de plus qu'une colonne DATETIME valeur de ma base de données MySQL. L'écho de la variable dans la vue est TOUJOURS 1 heure de moins que la valeur dans ma base de données...
Mon modèle de code est:
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();
}
OriginalL'auteur user2505513 | 2013-07-02
Vous devez vous connecter pour publier un commentaire.
Dans config/autoload.php, d'établir un modèle pour le charger à chaque chargement de la page. appelez $this->db->query("SET time_zone='+0:00'"); dans ce modèle constructeur.
config/autoload.php
Dans l'application/les modèles, créer un nouveau modèle de fichier portant le nom de "default_model.php" et d'ajouter le code ci-dessous.
application/models/default_model.php
Sur chaque chargement de la page, ce constructeur sera appelé et mysql fuseau horaire sera réglé à +0:00.
$this->db->query("SET time_zone='America/Chicago'");
note vous aurez besoin d'avoir la base des fuseaux horaires de l'installation mysql_tzinfo_to_sqlC'est fantastique, merci!
Il serait également une bonne idée d'ajouter quelque chose comme
date_default_timezone_set('TIMEZONE_SET_FOR_DATABASE');
à application/config/config.php juste en dessous de la ligne dedefined('BASEPATH') OR exit('No direct script access allowed.');
date_default_timezone_set est jusqu'à php. Si vous db et php, les fichiers sont situés à la même serveur et mysql utilise le même fuseau horaire, puis vous pouvez l'utiliser, mais vous ne savez pas à propos de mysql comportement. Si la base de données est dans un autre serveur, vous devrez suivre ma solution.
OriginalL'auteur Kumar V
Ajouter ces ligne dans votre
config file
et de vérifier ensuite, c'est de travailler pour moiVérifiez votre
insert query
il devrait ressembler à$this->db->query("INSERT INTO TABLE SET time_zone='+0:00'");
Voir ci-dessus, j'ai édité mon post pour y inclure mon code de requête @Rohan Kumar Encore, aucune différence!
a fonctionné pour moi! 🙂
OriginalL'auteur Rohan Kumar
J'aime la solution proposée par Kumar cependant, je n'ai pas besoin de définir ce à l'échelle mondiale, seulement lors de l'affichage des dates stockées dans l'heure UTC dans ma db.
Dans mon api modèle que j'ai la fonction suivante.
De mon contrôleur, je l'appelle la suite de la première.
Suivie par l'appel à la fonction qui interroge la db. Par exemple, je suis aller chercher de l'utilisateur de l'histoire.
Quand je l'affiche de la sortie, les dates sont dans mon fuseau horaire. J'espère que cela aide quelqu'un, quelque part dans le temps (pas pu résister).
OriginalL'auteur Danimal Reks
Vous pouvez le mettre dans le index.php fichier dans votre dossier de projet sur le dessus et après
<?php
OriginalL'auteur Sochy