Compte a rebours jusqu a un jour défini de la semaine [Résolu]

alone06 115 Messages postés mardi 9 novembre 2010Date d'inscription 18 mai 2016 Dernière intervention - 2 juin 2014 à 06:05 - Dernière réponse : alone06 115 Messages postés mardi 9 novembre 2010Date d'inscription 18 mai 2016 Dernière intervention
- 2 juin 2014 à 17:27
Bonjour,
j'essaye d'afficher la durée qui reste jusqu'à un jour défini de la semaine avec un script php mais à chaque fois j'ai des erreurs différentes

- dans le cas ou le jour n'est pas encore arrivé, je n'ai pas le chiffre exacte j'ai un jour de plus (l'exemple pour demain m'affiche en ce moment 1 jour, 20 heures, 1 minute et 5 s alors qu il devrait etre 0 jour, 19 heures, 1 minute et 5 s.

- Si on est dans le jour demandé, j'ai un affichage négatif l'exemple d aujourd'hui m affiche : Il reste : -0 jour, -4 heure, -1 minute et -59 s. alors qu'il devrait m'afficher le tps restant pour Lundi prochain.

voila mon code :
<?php
function AuPluriel($chiffre) {
    if($chiffre>1) {
        return 's';
    };
}
//récupère le temps du jour en seconde (à partir du temps 0 du calendrier :1 janvier 1970)
$jour=time();
// initialise à 0 le nombre de jours
$nb=0;
//date("l",$jour) donne le nom du jour
while (date("l",$jour)!="Monday")
{
// ajouter 1 au nombre de jours
$nb++;
//passer au jour suivant (60*60*24 secondes par jour)
$jour=$jour+60*60*24;
}
$j=date("j")+$nb;
$m = date("m");
$annee = date('Y');
$sun = mktime(0, 0, 1, $m, $j, $annee);

$tps_restant = $sun - time(); 

//============ CONVERSIONS

$i_restantes = round($tps_restant / 60);
$H_restantes = round($i_restantes / 60);
$d_restants = round($H_restantes / 24);


$s_restantes = floor($tps_restant % 60); // Secondes restantes
$i_restantes = floor($i_restantes % 60); // Minutes restantes
$H_restantes = floor($H_restantes % 24); // Heures restantes
$d_restants = floor($d_restants); // Jours restants
//==================
//setlocale(LC_TIME, 'fr', 'fr_FR', 'fr_FR.ISO8859-1');
setlocale(LC_ALL, 'fr_FR');

echo 'Il reste : <strong>'. $d_restants .' jour'.AuPluriel($d_restants).'</strong>, <strong>'. $H_restantes .' heure'.AuPluriel($H_restantes).'</strong>,'
   . ' <strong>'. $i_restantes .' minute'.AuPluriel($i_restantes).'</strong> et <strong>'. $s_restantes .' s</strong>.';

?>

Merci de m'aider.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
jordane45 22899 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 2 juin 2014 à 11:14
2
Merci
Bonjour,

<?php
function dateDiff($date1, $date2){
    $diff = abs($date1 - $date2); // abs pour avoir la valeur absolute, ainsi éviter d'avoir une différence négative
    $retour = array();
 
    $tmp = $diff;
    $retour['second'] = $tmp % 60;
 
    $tmp = floor( ($tmp - $retour['second']) /60 );
    $retour['minute'] = $tmp % 60;
 
    $tmp = floor( ($tmp - $retour['minute'])/60 );
    $retour['hour'] = $tmp % 24;
 
    $tmp = floor( ($tmp - $retour['hour'])  /24 );
    $retour['day'] = $tmp;
 
    return $retour;
}
 
 
$now = time();
$nextM = strtotime('next monday'); 
$tps_restant = dateDiff($nextM,$now) ;
echo "<br>";
Echo "Il reste : " .$tps_restant['day'] ." jours " .$tps_restant['hour'] ." Heures " .$tps_restant['minute'] ." minutes " .$tps_restant['second'] ." secondes " ;
?>

Merci jordane45 2

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de jordane45
jordane45 22899 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 2 juin 2014 à 09:39
0
Merci
Bonjour,

quelque chose du genre devrait pouvoir fonctionner :
$now = time();
$nextM = strtotime('next monday'); 
$tps_restant = $nextM - $now ;

echo floor($tps_restant/(60*60*24));


A adapter à tes besoins bien entendu.

Commenter la réponse de jordane45
alone06 115 Messages postés mardi 9 novembre 2010Date d'inscription 18 mai 2016 Dernière intervention - 2 juin 2014 à 17:27
0
Merci
Merci beaucoup Jordan, Tu me sauves encore une fois
mille merci
Commenter la réponse de alone06

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.