2013-01-25 4 views
-1

Possible en double:
How to calculate the difference between two dates using PHP?
How to get difference between two dates in Year/Month/Week/Day?mois Calculer, des années et des jours entre deux dates données comme horodatage

je suis en train de calculer les années et les mois et les jours entre deux dates données en PHP. J'utilise également l'horodatage de ces dates. est-il un moyen de calculer des années et des mois et

jours à partir de la différence de ces horodatage. Par exemple, la première date est le 2 janvier 2008. et la deuxième est le 5 juillet 2012. et le résultat est 4 ans 5 mois et 3 jours.

je travaille sur l'horodatage en entrée de date et que vous voulez savoir est-il une fonction disponible qui calculent directement les choses ci-dessus par deux horodatage entrée

Répondre

15

Vous pouvez utiliser l'objet DateTime pour cela (notez le "" manquant dans le constructeur datetime).

$datetime1 = new DateTime('2 Jan 2008'); 
$datetime2 = new DateTime('5 July 2012'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%y years %m months and %d days'); 
1

Vous pouvez créer deux objets DateTime (www.php.net/datetime) à partir des horodateurs. Lorsque vous appelez la méthode diff, vous obtenez un objet DateInterval, qui possède des propriétés pour les années et les mois.

9

Vous pouvez le faire assez facilement avec DateTime:

$date1 = new DateTime("2008-01-02"); 
$date2 = new DateTime("2012-07-05"); 
$diff = $date1->diff($date2); 

echo "difference " . $diff->y . " years, " . $diff->m." months, ".$diff->d." days " 

Documentation

+0

ne fonctionne pas avec le mois de février, il faut compter 31 jours pour le mois feb –

2

Vous devriez jeter un oeil à Carbon, il est un assez nouveau PHP 5.3 lib au-dessus de DateTime avec beaucoup de méthodes utiles.

Pour Date de diff:

<?php 
$dtOttawa = Carbon::createFromDate(2000, 1, 1, 'America/Toronto'); 
$dtVancouver = Carbon::createFromDate(2013, 1, 1, 'America/Vancouver'); 
echo $dtOttawa->diffInHours($dtVancouver); 
echo $dtOttawa->diffInDays($dtVancouver); 
echo $dtOttawa->diffInMinutes($dtVancouver); 
echo $dtOttawa->diffInYears($dtVancouver); 

Si vous voulez diff Texte lisible:

$dt = Carbon::createFromDate(2011, 2, 1); 

echo $dt->diffForHumans($dt->copy()->addMonth());    // 28 days before 
echo $dt->diffForHumans($dt->copy()->subMonth());    // 1 month after 
Questions connexes