Tout d'abord, je me bats depuis deux jours sans arrêt pour comprendre ce dont j'ai besoin avec ce code et toujours coincé dans le carré. Donc, je reviens ici et j'espère que quelqu'un jettera une lumière sur cette question que ma tête est en train d'exploser.DateTime dans PHP renvoie la valeur incorrecte?
ce que je dois faire est de faire la différence entre deux valeurs en utilisant DateTime en PHP.
La première valeur est 00:00 qui est une valeur fixe et ne changera jamais.
la deuxième valeur est $ offset/3600 * 1, ce qui correspond à un décalage horaire entre deux fuseaux horaires.
le code J'utilise est le suivant:
<?php
if (0 > $offset)
{
// set an object with the current date
$date = new DateTime();
$date->setTime(00, 00);
// the second date
$date2 = new DateTime($offset/3600 * 1);
// apply the diff() method, getting a DateInterval object ($diDiff)
$diDiff = $date->diff($date2) ;
}
echo $diDiff->format("H:i");
?>
le code ci-dessus de l'écho ceci: H:i
et rien d'autre!
qu'est-ce que je fais mal?
Merci d'avance.
EDIT:
Le décalage $ vient d'ici:
if(isset($_POST['submit']))
{
//be sure to validate and clean your variables
$timezone1 = htmlentities($_POST['timezone1']);
$timezone2 = htmlentities($_POST['timezone2']);
//then you can use them in a PHP function.
function get_timezone_offset($origin_tz, $remote_tz) {
$timezone1 = new DateTimeZone($origin_tz);
$timezone2 = new DateTimeZone($remote_tz);
$datetime1 = new DateTime("now", $timezone1);
$datetime2 = new DateTime("now", $timezone2);
$offset = $timezone1->getOffset($datetime1) - $timezone2->getOffset($datetime2);
return $offset;
}
$offset = get_timezone_offset($timezone1, $timezone2);
}
?>
timezone1 et timezone2 sont deux listes déroulantes avec php et les fuseaux horaires à l'intérieur, ils sont identiques.
comme ceci:
<select name="timezone2" id="timezone2" class="timezone2">
<?php
foreach($options as $key => $value)
{
echo '<option value="'. $key .'" label="'. $value .'">'.$value.'</option>';
}
?>
<option value="Africa/Abidjan" label="Abidjan">Abidjan</option>
<option value="Africa/Accra" label="Accra">Accra</option>
<option value="Africa/Addis_Ababa" label="Addis Ababa">Addis Ababa</option>
<option value="Africa/Algiers" label="Algiers">Algiers</option>
<option value="Africa/Asmara" label="Asmara">Asmara</option>
</select>
Où définissez-vous $ offset? – Tchoupi
le décalage $ est défini en haut de la page et lorsque l'utilisateur choisit deux emplacements/fuseaux horaires. –
Au départ, vous avez 'if (0> $ offset)', voulez-vous dire si 'zero est supérieur à $ offset'? – Jason