J'ai un problème avec le temps de calcul en PHP. Il est un script simple: lorsqu'un temps est donné (dateNow), une livraison immédiate de la fonction évalue:php4 erreur de calcul du temps
- si elle est < 10 heures -> il affiche aujourd'hui à 12h30
- si elle est < 14Pm - > il affiche nous ne pouvons pas prendre l'ordre
- et si ce ne sont pas ci-dessus -> il affiche demain à 12:30
Je php 4.4.9 sur mon serveur, date_default_timezone_set ne fonctionne pas , donc je dois utiliser gmdate et calculer le décalage. Quand je mets tout le script, il sort la veille (il utilise le servertime qui n'est pas mon fuseau horaire actuel). C'est le code. Merci pour toute aide.
<?php
$gmt = -3;
$datenow = gmdate("d-m-Y H:i:s", mktime(date("H")+ $gmt, date("i"), date("s"), date("m"), date("d"), date("Y")));
$date = strtotime($datenow);
function ordertime ($when)
{
global $date ;
$datearray = strtotime($when);
if ($datearray['hours'] < 10) {
// order ships today
return strtotime("today 12:30");
}
elseif ($datearray['hours'] < 14) {
// we can't take this order
echo "we can't take this order";
} else {
// order ships tomorrow
return strtotime("tomorrow 12:30");
}
}
// date_default_timezone_set("America/Argentina/Buenos_Aires"); // this does not work on php4.4.9
$delivery = ordertime($date);
if ($delivery) {
$deliverytime = strftime("%d-%m-%Y %H:%M:%S", $delivery);
echo $datenow."<br />";
echo $deliverytime;
}?>
Ce qui me donne cette sortie
OUTPUT
25-02-2012 03:46:22
24-02-2030 12:30:00
J'ai ai fait tout le suggère la correction Kolink. J'ai enlevé le deuxième paramètre dans return strtotime
parce qu'il me donne une sortie de 05-08-2030 12:30:00
. Et si je supprime getdate, j'ai la même sortie en php5.
Il va résoudre le problème, mais la fonction de commande serait inutile. Le point entier est d'utiliser la fonction – chenci
que je veux dire dans les valeurs 'return' dans votre fonction' ordertime'. C'est de là que vient le problème. –
Il sort ce 31-12-1969 12:30:00, très bizarre – chenci