J'ai besoin de calculer la différence d'heures entre deux fuseaux horaires et je rencontre des problèmes lorsque le fuseau horaire qui précède est déplacé au jour suivant.Calcul de la différence de temps en heures entre deux fuseaux horaires
Exemple:
//Let's say it is 11pm 23:00 in LA
$local_tz = new DateTimeZone('America/Los_Angeles');
$local = new DateTime('now', $local_tz);
$local_hour = $local->format('H');
//NY is 3 hours ahead, so it is 2am, 02:00
$user_tz = new DateTimeZone('America/New_York');
$user = new DateTime('now', $user_tz);
$user_hour = $user->format('H');
Suivant l'exemple dans cette question (Calculate hours between dates in different time zones) Je reçois un résultat incorrect:
$diff = $user_tz->getOffset($local);
error_log('$diff '.gmdate("H:i:s", $diff)); //outputs 20:00:00
S'il était 16 heures à Los Angeles, donc 19 heures à New York, alors il est facile :
$time_diff = ($user_h - $local_h); //$time_diff = 3;
Mais quand NY se déplace au lendemain, je reçois à nouveau des résultats incorrects:
$time_diff = ($user_h - $local_h); //$time_diff = -21;
Comment puis-je comptabiliser un autre fuseau horaire qui a été déplacé vers un nouveau jour?
'$ time_diff = $ time_diff> 0? $ time_diff: $ time_diff + 24; 'Peut-être que cela va le réparer? –