Page 1 sur 1

Comparer 2 dates ... ?

Posté : 10 sept. 2007, 09:28
par Sebe
Bonjour,

Je recherche l'astuce pour comparer 2 dates; celle d'aujourd'hui avec celle du jour de postage d'un message afin d'afficher
  • aujourd'hui (soit $datepost = $now),
    hier(soit $datepost = $now - 1),
    la date du postage (soit par défaut)
En me baladant, j'ai réussi à comprendre qu'il fallait comparer les jours:
setlocale(LC_TIME, "fr"); 
			
$now = time();
$now_year=date('Y',$now);
$now_month=date('m',$now);
$now_day = date('d',$now); 
$now_day_1 = $now_day - 1;
			
$datepost = strftime('%d %m %Y', $lastlist->days);
$datepost_year = date('Y',$datepost);
$datepost_month = date('m',$datepost);
$datepost_day = date('d',$datepost);
Malheureusement, impossible d'aller plus loin car 'echo $datepost_day' me renvoie n'importe quoi !
Par la suite, je pense enchaîner avec :
switch ( $datepost ) {
		case $now_day:
		$dateview = 'Aujourd\'hui'; break;
			
		case $now_day_1:
		$dateview = 'Hier'; break;
				
		default :
		$dateview = strftime('%a %d %b %Y', $lastlist->days);
		}
			
$heure = date('H\Hi', $lastlist->days);
echo '<td><div align="right">' . $dateview . ' ' . $heure . '</div></td>';
Une idée pour moi ?

Merci

Posté : 10 sept. 2007, 09:46
par jojolapine
Tu pourrais faire un peu plus simple (je n'ai pas testé, mais ça devrait ressembler à ça)
<?php
//timestamp actuel
$now = time();

//timestamp du post
$datepost=$lastlist->days;

//différence entre les deux
$diff=$now-$datepost;

if($diff<mktime(0,0,0,0,1,0)){
     $dateview = 'Aujourd\'hui';
} elseif($diff<mktime(0,0,0,0,2,0)) {
     $dateview = 'Hier';
} else {
     $dateview = strftime('%a %d %b %Y', $lastlist->days);
}
?>
Voilà ce que j'aurais fait à peu près... (je me répète, je n'ai rien testé, donc il y a certainement une ou deux erreurs).

Posté : 10 sept. 2007, 10:07
par Cyrano
On trouve des choses intéressantes dans la FAQ pour peu qu'on prenne un peu le temps de regarder ;)

Posté : 10 sept. 2007, 10:13
par jojolapine
Oui bon ok j'ai fait une pitite erreur... :oops:
Mais avec mon bout de code et le point 3 du post précédemment cité, tu auras la solution ;)

Posté : 10 sept. 2007, 12:13
par Sebe
On trouve des choses intéressantes dans la FAQ pour peu qu'on prenne un peu le temps de regarder ;)
Je suis resté sur le fait que 'Google est mon ami !' et comme je n'y avais rien trouvé ... :lol:

Pour finir, j'ai quand même dû apporter quelques modifications pour tomber sur des jours 'entiers' sinon 'hier' à 23h00 ce n'était pas 'hier' mais 'aujourd'hui' à 23h00 !
Voici le code:
if ($jour) { // == 1
	setlocale(LC_TIME, "fr"); 
			
	$jourpost = floor($lastlist->days / 3600 / 24);
	$now = time(); // le timestamp d'aujourd'hui
	$today = floor($now / 3600 / 24);
	$ecart = $today - $jourpost;
			
	if ($ecart == 0) {
		$dateview = 'Aujourd\'hui à'; 				
		}else if ($ecart == 1) {
			$dateview = 'Hier à';
			}else {
				$dateview = strftime('%a %d %b %Y', $lastlist->days);
			}
					
	$heure = date('H\Hi', $lastlist->days);
	echo '<td><div align="right">' . $ecart . ' ' . $dateview . ' ' . $heure . '</div></td>';
}
Je regarde demain par sécurité si cela fonctionne comme je l'attendais ... merci à vous 2 !

A+[/code]