Convertir le Timestamp Unix de l'heure de la zone?
J'ai un timestamp unix, qui est réglé à +5, mais je voudrais le convertir en -5, heure de l'est heure Standard. Je voudrais juste faire l'horodatage être généré dans cette zone de temps, mais je passe à partir d'une autre source qui est à +5.
Actuelle Non Modifié Timestamp Être Convertie En Une Date
<? echo gmdate("F j, Y, g:i a", 1369490592) ?>
OriginalL'auteur Necro. | 2013-05-25
Vous devez vous connecter pour publier un commentaire.
Utilisation DateTime et DateTimeZone:
Corrigez-moi si je me trompe @John certes, cela ne fonctionne pas? Cette méthode serait d'utiliser les systèmes (Config PHP) fuseau horaire par défaut n'ayant pas spécifié lors de la création de l'instance de l'objet DateTime. Comme ici. Donc, lors de la conversion de America/Chicago, il serait altéré contre le système de fuseau horaire en supposant que ce n'est pas le même que +5 comme le timestamp UNIX de lui-même qu'il cherche à modifier par ~10 zones?
C'est en effet mal. Les timestamps Unix sont toujours UTC. Plaisir des exemples de code: ini_set('date.fuseau horaire', 'America/Los_Angeles'); $maintenant = time(); $utc = new DateTime("@{$maintenant}", new DateTimeZone ("America/New_York')); echo "{$utc->format('c')}\n"; // 2014-08-27T15:24:09+00:00 $utc = new DateTime("@{$maintenant}"); echo "{$utc->format('c')}\n"; // 2014-08-27T15:24:09+00:00 ini_set('date.fuseau horaire', 'UTC'); $heure utc = new DateTime("@{$maintenant}", new DateTimeZone('UTC')); echo "{$utc->format('c')}\n"; // 2014-08-27T15:24:09+00:00
OriginalL'auteur John Conde
Que parce que modifier la file d'attente pour Jean-Conde réponse est pleine, je vais ajouter des réponse plus détaillée.
De
DateTime::__construct ($string temps, DateTimeZone $timezone)
C'est la principale raison pourquoi vous devez toujours spécifier le fuseau horaire, même par défaut, lors de la création de
DateTime
objets de timestamp unix. Voir expliqué code inspiré par Jean-Conde réponse:OriginalL'auteur terales
Un plus facile façon de le faire est:
Tout en utilisant
gmdate()
, ajouter votre fuseau horaire en secondes pour unix_stamp dans gmdate.Envisager de mon fuseau horaire est GMT+5:30. Donc 5 h 30 min en secondes sera 19800
Donc, je vais le faire:
gmdate("F j, Y, g:i a", 1369490592+19800)
OriginalL'auteur J Shubham