2016-11-27 2 views
1

Ich brauche 3 Monate bis Gabe eines bestimmten Datum zu einem Datum hinzuzufügen:unerwartetes Ergebnis, wenn Monate zu einem Datum Zusatz

$next_dt = date('Y-m-d H:i:s', strtotime('2015-12-31 00:00:00')); 
    while($next_dt <= '2016-11-07 00:00:00'){ 
     $next_dt = date('Y-m-d H:i:s', strtotime("+3 months",strtotime($next_dt)));  
    } 

das Ergebnis dieser Addition ist 2017.01.01 00.00.00 während ich das Ergebnis erwarten 2016-12-31 00:00:00

zu sein, wenn ich nach 12 Monaten bin Zugabe einmal das Ergebnis

$orig_dt = date('Y-m-d H:i:s', strtotime('2015-12-31 00:00:00')); 
$next_dt = date('Y-m-d H:i:s', strtotime("+12 months", strtotime($orig_dt))); 

korrekt ist, aber ich nicht im Voraus wissen kann, wie viele Monate ich werde n

was soll ich tun?

Antwort

0

Die Verwendung von strtotime() und '+1 Monat' ist mühsam, weil es nicht so funktioniert, wie man es erwarten würde.

Um es einfacher zu machen, scheint strtotime ('+ 1 Monat', ...) nur 30 Tage unabhängig von dem Monat hinzuzufügen. Für bestimmte Monate ist dies ein Problem, da nicht alle Monate 30 Tage haben.

Ich würde '+1 Monat' nicht verwenden, um das zu tun, was ich getan habe, ist jeden Monat nacheinander durchzugehen und nur den letzten Tag des Monats zu bekommen und einen weiteren Tag hinzuzufügen. Es ist vielleicht nicht die eleganteste Lösung, aber es ist sicherer.