Webmaster Hub: Conversion de date - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Conversion de date date et mktime Noter : -----

#1 L'utilisateur est hors-ligne   ebouilleur 

  • Groupe : Webmaster Régulier
  • Messages : 54
  • Inscrit(e) : 26-mai 06

Posté 30 août 2010 - 19:14

Bonjour,

Je rencontre un petit soucis de conversion d'un timestamp en durée lisible.

J'ai par exemple :
$temps = 5000; (valeur pris au hasard)
echo date ( "d\j G\h i\m", mktime(0, 0, $temps, 0, 0, 0)) ;



Je cherche donc a affiché une durée restant avec un évènement
Mais il y a un décalage d'un jour
En effet si $temps est de 12h, mon echo va affiché 30j 12h 00m au lieu de 0j 12h 00m

Pourquoi et comment résoudre ce petit problème?

Merci pour vos réponses.
0

#2 L'utilisateur est hors-ligne   Jeanluc 

  • Groupe : Fondateur
  • Messages : 1 991
  • Inscrit(e) : 04-octobre 04
  • Genre:Homme
  • Localisation:Bruxelles

Posté 30 août 2010 - 20:28

Bonjour,

Ces fonctions ne sont pas faites pour représenter des durées, mais des dates. Pour une date, le jour varie entre 1 et 31; il ne peut pas être 0. Si tu essaies d'utiliser le jour "0", il me semble que la fonction passe au dernier jour du mois précédent (jour "0" d'avril = le 31 mars).

Peut-être qu'un autre Webmaster-Hubien aura une solution pour contourner le problème.

Jean-Luc

P.S. Va voir du côté de DateTime::diff.
Liste de + de 150 annuaires FreeGlobes et autres listes d'annuaires pour le référencement.
Testeur de redirection (301, 302, meta refresh,...)
Le Grand Annuaire : comme DMOZ, mais avec indexation super-rapide
0

#3 L'utilisateur est hors-ligne   ebouilleur 

  • Groupe : Webmaster Régulier
  • Messages : 54
  • Inscrit(e) : 26-mai 06

Posté 02 septembre 2010 - 15:43

Merci pour ta réponse

En fait je me suis fait une fonction qui me va bien (avec des morceaux de code pris sur google) :

function F_calcul_duree($duree_restante)
// détermine la duree de construction en fonction d'un timestamp
{
  $tps_restant = $duree_restante ;
  $i_restantes = $tps_restant / 60;
  $H_restantes = $i_restantes / 60;
  $d_restants = $H_restantes / 24;
  $s_restantes = floor($tps_restant % 60); 
  $i_restantes = floor($i_restantes % 60); 
  $H_restantes = floor($H_restantes % 24); 
  $d_restants = floor($d_restants); 
  if ($d_restants > 0 ) echo $d_restants."j ";
  if ($H_restantes > 0 ) echo $H_restantes."h ";
  if ($i_restantes > 0 ) echo $i_restantes."m ";
}


0

#4 L'utilisateur est hors-ligne   MrPierre 

  • Groupe : Webmaster Régulier
  • Messages : 95
  • Inscrit(e) : 16-septembre 10
  • Genre:Homme
  • Localisation:Belgique

Posté 16 septembre 2010 - 12:34

Si ça peut t'aider ce petit code affiche différents moments suivant ton timestamp sauvegardé :

<?
$date = $donnees['tadate'];
$diff = time()-$date;
  
if($diff < 60)
  $quelledate = 'Il y a '.$diff.' sec';
else if($diff < 3600)
  $quelledate = 'Il y a '.round($diff/60, 0).' min';
else if($diff < 86400)
  $quelledate = 'Il y a '.round($diff/3600, 0).' heures';
/*else if($diff > 10800 AND $diff < 86400)
  $quelledate = 'Aujourd\'hui à '.date('H:i:s', $date);*/
else if($diff <= 86400 AND $diff < 172800)
  $quelledate = 'Hier';
else if($diff <= 172800 AND $diff < 159200)
  $quelledate = 'Il y a 2 jours';
else{
  if(date('m', $date) == '01'){$mois = 'janvier';}
  if(date('m', $date) == '02'){$mois = 'février';}
  if(date('m', $date) == '03'){$mois = 'mars';}
  if(date('m', $date) == '04'){$mois = 'avril';}
  if(date('m', $date) == '05'){$mois = 'mai';}
  if(date('m', $date) == '06'){$mois = 'juin';}
  if(date('m', $date) == '07'){$mois = 'juillet';}
  if(date('m', $date) == '08'){$mois = 'août';}
  if(date('m', $date) == '09'){$mois = 'septembre';}
  if(date('m', $date) == '10'){$mois = 'octobre';}
  if(date('m', $date) == '11'){$mois = 'novembre';}
  if(date('m', $date) == '12'){$mois = 'décembre';}
  $quelledate = 'Le '.date('d', $date).' '.$mois;}
?>



Ces petits messages sont plus sympa que des heures brutes :smartass:
Des connaissances dans l'un ou l'autre domaine? Créez des articles rémunérés sur www.questmachine.org !
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)