2014-09-17 4 views
2

je dois calculer mois à deux datesCalculer Mois de deux dates

Par exemple:

Si date1 = '2014-08-20' signifie 20 août 2014

& date2 = '2014-09-17' signifie la date d'aujourd'hui

je besoin de différence de months = 2 (Aug + September)

De la même manière

 If `date1 = '2014-03-15'` means 15th March 2014 

    & `date2 = '2014-09-17'` means today date 

alors je dois à la différence de months = 7 (March + April + May + June + July + Aug + SEPT)

Comment puis-je faire avec les fonctions de date php?

+0

S'il vous plaît vérifier, peut être double: - http://stackoverflow.com/questions/13416894/calculate-the-number-of-months-between-two-dates-in-php – Khushboo

+0

double possible de [ Comment calculer la différence entre deux dates en utilisant PHP?] (Http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php) – Sugar

Répondre

2

C'est ce que vous êtes Vous cherchez?

$date1 = new DateTime('2014-08-20'); 
$date2 = new DateTime('2014-09-17'); 

echo $date2->format('n') - $date1->format('n') + 1; 
+0

oui exactement Merci! –

2
$date1 = new DateTime('2014-08-20'); 
$date2 = new DateTime('2014-09-17'); 

$diff = $date2->diff($date1); 

$diff->format('%m months'); 
+0

ça me donne 0 mois; Mais j'ai besoin comme je l'ai dit en question est mois = 2 –

0

Vous pouvez faire avec:

$first_date = '2014-03-15'; 
$second_date = '2014-09-17'; 

$date1 = strtotime($first_date); 
$date2 = strtotime($second_date); 

$year1 = date('Y', $date1); 
$year2 = date('Y', $date2); 

$month1 = date('m', $date1); 
$month2 = date('m', $date2); 

$diff = (($year2 - $year1) * 12) + ($month2 - $month1); 

Mais pour compter la différence de jour, nous pouvons aussi le faire comme suit:

$date_interval = $first_date->diff($second_date); 
     echo "difference " . $date_interval->y . " years, " . $date_interval->m." months, ".$date_interval->d." days "; 

Vérifiez ce lien link

+0

il me donne 6 mois; Mais j'ai besoin comme je l'ai dit en question est mois = 7 –

+0

donc pour cela il devrait également compter la différence de jour? Ouais. –

0

Vous pouvez faire de la manière suivante.

Considérons cet exemple:

<?php 
$start = new DateTime('2011-12-02'); 
$start->modify('first day of this month'); 
$end  = new DateTime('2012-05-06'); 
$end->modify('first day of next month'); 
$interval = DateInterval::createFromDateString('1 month'); 
$period = new DatePeriod($start, $interval, $end); 

foreach ($period as $dt) { 
    $monthNum=$dt->format("m"); 
    echo $dt->format("Y").date('F', mktime(0, 0, 0, $monthNum, 10)). PHP_EOL; 
} 

Voir en action Here

Référence: How to list all months between two dates

+0

Avez-vous lu mes questions? –

2

Si vous voulez prendre en compte pour chaque mois se sont écoulés, vous pouvez essayer ceci:

$date1 = new DateTime('2014-03-15'); 
$date2 = new DateTime(); 
$date2->modify('last day of this month'); // adjust it to take into account 
$int = new DateInterval('P1M'); // every month 
$count = 0; 
$range = new DatePeriod($date1, $int, $date2); 
foreach($range as $d) { 
    ++$count; // for each month incremenent 
} 
echo $count; 
+0

oui exactement Merci !!! –

+0

@SandipPatel bien content que ça a aidé, en fait la réponse de Casimir est bien aussi – Ghost

+0

oui Casimir et Hippolyte ont donné une réponse très courte donc ça va m'aider aussi et d'autres aussi. Merci encore pour votre réponse. –

Questions connexes