2011-07-14 5 views
0

Je stocke actuellement des dates dans ma base de données MYSQL sous la forme d'un timestamp PHP (champ entier). Cependant, si je le récupère de la base de données et utilise la fonction de date PHP, afficherait-il l'heure correcte en fonction du fuseau horaire du client.Horodatage PHP et affichage correct de la date et de l'heure dans différents fuseaux horaires

Par exemple, j'affiche un timestamp PHP 1310674625 (tiré de DB) qui est Jul 14 2011 22:17:05 en heure de l'Est. Donc, si j'affiche l'horodatage en PHP avec le code ci-dessous, est-ce qu'une personne qui consulte la page Web dans le fuseau horaire du Pacifique voit Jul 14 2011 19:17:05 à la place?

echo date('M d Y H:i:s', 1310674625); 
+0

je ne pense pas que cela fonctionnera comme ça, pourquoi ne pas u enregistrer comme UTC et utiliser javascript pour déterminer le fuseau horaire du client et le formater correctement – Ibu

Répondre

1

N ° La date sera affichée en fonction de l'heure et du fuseau horaire du serveur, pas de celui de l'utilisateur.

Vous pouvez offrir une option sur votre site pour permettre à l'utilisateur de fournir son fuseau horaire (ou tenter d'utiliser la géolocalisation en fonction de l'adresse IP) et ajuster la sortie en fonction. Selon this post, la détermination fiable du fuseau horaire de l'utilisateur peut ne pas être possible. Pour de meilleurs résultats, vous devrez peut-être obtenir des informations de la part de l'utilisateur.

EDIT (Basé sur la demande de plus d'informations dans les commentaires)

Si vous devez sortir le fuseau horaire sélectionné, vous pouvez utiliser l'une des options suivantes:

echo date('e'); // Examples: UTC, GMT, Atlantic/Azores (Available in version 5.1.0 and later 
echo date('O'); // Different in Greenwich meantime. Example: +0200 
echo date('T'); // Timezone abbreviation. Examples: EST, MDT ... 

Voir la date page de manuel pour plus d'informations.

EDIT 2:

' "imprimer la date à un fuseau horaire spécifié", vous devrez:

  1. Obtenir la date actuelle comme un horodatage (time())
  2. Obtenez l'utilisateur de timezone offset
  3. Utilisez mktime pour ajouter ou soustraire le décalage de l'utilisateur si nécessaire.
  4. Convertissez le résultat en format lisible par l'utilisateur en utilisant date().
+0

Heh, 13 secondes plus vite :) – genesis

+0

Alors, est-il possible en PHP d'imprimer la date dans un fuseau horaire spécifié? – peter

+0

@PeterBZ: S'il vous plaît voir ma réponse mise à jour pour plus d'informations. –

-1

Utilisation date_default_timezone_set Si vous connaissez les utilisateurs fuseau horaire

vous pouvez également utiliser Javascript Date (horodatage d'impression ici)

+0

Cela définira le fuseau horaire par défaut utilisé par les scripts sur le serveur, mais n'affectera pas les données en fonction de l'emplacement de l'utilisateur. –

+0

Vous pouvez demander à l'utilisateur son fuseau horaire – RiaD

Questions connexes