fuseau horaire avec l'heure d'été manipulation par PHP
Je suis en train de travailler sur une application de calendrier. Dans ce utilisateurs de différents fuseaux créer/afficher les événements.
Je pense à suivre ci-dessous la méthode pour économiser de l'événement de l'heure UTC et de l'afficher à l'utilisateur, heure locale. Remarque: l'utilisateur a préféré le fuseau horaire.
Pour économiser de l'événement, l'heure de début UTC timestamp:
$timezone = new DateTimeZone( $user_timezone_name );
$utcOffset = $timezone->getOffset( new DateTime( $event_start_time_string_local ) );
$event_start_timestamp_local = maketime( $event_start_time_string_local );
//Now add/subtract $utcOffset to/from $event_start_timestamp_local to get event's start //time timestamp in UTC and save this result in DB.
Pour obtenir de l'événement heure de début de l'utilisateur fuseau horaire:
date_default_timezone_set( $user_timezone_name );
$eventTimeLocalTime = date("Y-m-d H:i:s", $event_start_timestamp_in_UTC );
Où:
user_timezone_name is user's timezone setting.
event_start_time_string_local is event's start time string in local/civil time.
event_start_timestamp_in_UTC is event's start time timestamp in UTC.
Mes questions:
- Si l'Api PHP utilisé ci-dessus, de prendre soin de l'heure d'été pour toutes les régions?
- L'heure d'été lui-même des changements dans les différentes années, comment PHP obtient des informations à ce sujet? avons-nous besoin de mise à jour de PHP? Si donc nous n'avons besoin de mettre à niveau ou particulier bibliothèque PHP?
Références:
- n'est-phps-date-par défaut-timezone-set-ajuster-de-lumière-économie
- obtenez-timezone-offset-pour-un-compte tenu de:-emplacement
OriginalL'auteur Krishna Shetty | 2012-12-04
Vous devez vous connecter pour publier un commentaire.
Vous êtes bien trop compliquer à l'excès. La conversion entre les deux fuseaux horaires à l'aide de
DateTime
, faites ceci:Ce convertit à partir d'un local de l'utilisateur fuseau horaire UTC. Pour aller dans l'autre sens, pour afficher l'heure dans le local de l'utilisateur en temps, échanger les deux fuseaux horaires.
Oui, PHP prend soin de l'heure d'été. La conversion nécessaire règles font partie de l'installation de PHP. Vous pouvez les conserver jusqu'à la date de la mise à jour de PHP, ou par la mise à jour de la timezonedb: http://pecl.php.net/package/timezonedb.
Merci beaucoup, je vais utiliser cette
Pourquoi avons-nous besoin d'appeler " date_default_timezone_set('Asia/Kolkata')' à la case départ?
Vous pouvez utiliser
'@12345...'
pour UNIX de l'heure.Un timestamp UNIX est défini comme de secondes depuis 1970 UTC. Le timestamp est le fuseau horaire libre, mais si quelque chose, c'est l'heure UTC. Vous pouvez mettre en forme dans une heure "local", comme indiqué ci-dessus.
OriginalL'auteur deceze
Oui php api prend en compte l'heure d'été. La plupart du temps, vous pouvez effectuer en toute sécurité le temps de conversion de la voie deceze l'a montré. Le problème est qu'il n'est pas toujours possible/faisable ou de sens. Considérons l'exemple ci-dessous - en Pologne (en 2013) sur 27 Oct à 3 h du matin, votre réveil est déplacé d'une heure pour passer à l'heure d'hiver (décalage UTC+01:00) le 31 Mars à 2h du matin, l'horloge est ajustée avant d'1h pour passer à l'heure d'été(décalage UTC+02:00). Nous allons maintenant voir comment le "temps réel" les tiques dans Grenwich/UTC et comment la conversion en PHP à partir de l'Europe/Warsaw à l'UTC de travaux:
Comme vous pouvez le voir entre 2h-3h du matin il n'y a aucun moyen de PHP peut savoir " qui " à l'heure (avant/après ajustement), il est donc impossible de convertir fiable.
Espérons que cela aide quelqu'un dans ses délibérations 😉
OriginalL'auteur Artur