2017-10-13 19 views
-1

Ich muss den Code ändern, so dass es 2 Jahre Datum und nicht nur ein Jahr senden wird.DateInterval: Jahr von jetzt

Ich habe versucht, zu $year_from_now->add(new DateInterval('P2Y')); ändern, aber es wird nicht funktionieren.

finden Sie unter Code:

$year_from_now=new DateTime(); 

    $year_from_now->add(new DateInterval('P1Y')); 


    $dates_array = array(); 

    foreach ($tariffs as $beds24_room_type=>$tariff_type_dates) { 

     $counter = 1; 

     foreach ($tariff_type_dates as $tariff_type=>$tariff_dates) { 

      $odo = "p".$counter; 

      foreach ($tariff_dates as $date=>$tariff_details) { 

       $this_date=date_create(date("Y/m/d" , strtotime($date))); 

       $diff=date_diff($year_from_now,$this_date); 

       if ( 

        (int)$diff->format("%R%a") <= 0 && // Up to one year from today 

        (int)$diff->format("%R%a") > -365 // Not earlier than today 

        ) { 
+1

'add („+ 1 Jahr“)' nicht es für Sie richtig ist zu tun? – Qirel

+1

'$ date-> add (neuer DateInterval ('P2Y'));' ist richtiger Arbeitscode; Im Allgemeinen "es wird nicht funktionieren" ist keine gültige Fehlerbeschreibung - geben Sie an, welches Ergebnis Sie erwarten und was das tatsächliche Ergebnis ist - mit funktionierendem, minimalem Code, der das Fehlverhalten zeigt. –

+0

Fügen Sie einen Aufruf zu date_default_timezone_set() hinzu. Das musste ich tun, damit es auf meinem System funktioniert. – Nic3500

Antwort

1

Es gibt ein Problem in Ihrem eigenen Code ist. P2Y sollte funktionieren.

Versuchen Sie den folgenden Code in einer leeren Datei auszuführen, werden Sie sehen, dass es

<?php 
    $year_from_now=new DateTime(); 
    $year_from_now->add(new DateInterval('P2Y')); 

    echo $year_from_now->format('Y-m-d H:i:s'); 
?> 
+0

Es wird nur funktionieren, wenn Sie date.timezone in den Einstellungen festlegen oder wenn Sie date_default_timezone_set() aufgerufen haben. Das ist es, was es auf meinem System getan hat. – Nic3500

+0

Das macht keinen Sinn, kein Downvote, wenn Sie keinen gültigen Grund haben. Lerne PHP und lese das Problem + Antwort, bevor du mit Unsinn antwortest. P1Y würde auch nicht funktionieren, wenn das Problem in der Zeitzone liegt. – Boratzan

+0

Sie sagten "Versuchen Sie, den folgenden Code in einer leeren Datei auszuführen, Sie werden sehen, dass es korrekt ist", es hat nicht funktioniert. – Nic3500

Verwandte Themen