Question

Il semble qu’il existe de nombreuses façons d’approcher la date et l’heure avec un massage en php. En général, je ne traite que de l’heure locale. Aujourd'hui, je dois travailler en UTC.

J'interroge une API, les données qu'ils me fournissent à propos d'un enregistrement arbitraire sont les suivantes: créé: jeu., 18 juin 2009 21:44:49 +0000 * Documenté comme 'heure de création de l'enregistrement UTC'

utc_offset: -28800 * Différence entre les utilisateurs re

Je dois convertir cela en une simple chaîne pour indiquer à l'utilisateur l'heure et la date auxquelles les données ont été soumises à l'heure locale.

Je crois que ce qui précède se traduit, par exemple, en Californie: Jeudi 18 juin 2009 14h44:49

Mon objectif est d’obtenir une valeur temporelle que je peux transmettre à date () pour un formatage aisé dans une "jolie". format.

Est-ce vraiment aussi simple que de convertir le temps créé ci-dessus en secondes depuis une époque, d’ajouter le décalage puis de le passer à date ()? Quel est le gothcha à surveiller?

$created_time = 'Thu, 18 Jun 2009 21:44:49 +0000';
$utc_offset = -28800;
$seconds = strtotime($created_time);
$localized_time = $seconds + $utc_offset;

echo date(DATE_RFC822, $localized_time);

Merci

Était-ce utile?

La solution

PHP devrait faire la chose automatiquement pour vous. Je peux aussi fortement recommander d'utiliser l'objet DateTime à la place.

$ dt = new DateTime ($ created_time);   echo $ dt- & format (DATE_RFC2822);

Les fonctions de date et d'heure de PHP sont sensibles au fuseau horaire. Assurez-vous que vous utilisez une version récente de PHP, car beaucoup de travail a été fait pour améliorer ces systèmes.

Autres conseils

Vous pouvez utiliser date_default_timezone_set pour passer d'un fuseau horaire à l'autre. Dans votre cas, vous transmettriez les informations de fuseau horaire du profil de l'utilisateur. Comme recommandé par Evert, si vous utilisez PHP 5 & 5.2, utilisez le fichier plus avancé DateTime. classe.

<?php
echo date('h:i:s')."\n";
date_default_timezone_set('Europe/Paris');
echo date('h:i:s')."\n";
date_Default_timezone_set('UTC');
echo date('h:i:s')."\n";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top