2016-12-19 3 views
1

in PHP, wenn ich den Tag des Monats, wie haben:php den kommenden Tag von Monat Tages

$day = 19; 

Wie kann ich das nächste Vorkommen von $day erhalten,

function nextOccurrence($day) { 
    /// ??? 
    return $date; 
} 

wenn heute 2016-12-18 dann nextOccurence(19) sollte morgen (19) 2016-12-19 zurückgeben. heute

und wenn ist 2016-12-19 oder ein höheres Datum im Dezember dann nextOccurence(19) sollte die 19th des nächsten Monats zurückkehren heißen 2017-01-19.

+1

'datum ('d')'/'datum ('j')'/'datum (' n ') 'zeigt dir was du brauchst. –

+0

das gibt die numerische Darstellung des aktuellen Monats .. nicht, was ich brauche –

+0

können Sie bitte beschreiben, wie kann ich das in meinem Fall verwenden? –

Antwort

1

Sie müssen folgendes tun:

Wenn heute < = ab dem Tag, Sie wollen, fügen Sie einfach (Tag - heute) Tagen, sonst, fügen Sie einen Monat den aktuellen Tag und subtrahieren (heute - Tag).

+0

danke mann das hat funktioniert .. –

0

Bitte versuchen Sie diesen Code:

echo '<br>Today is :' . date('Y-m-d'); 
echo '<br>Next day is : ' . date('Y-m-d',strtotime("+1 day")); 

Danke ....

0

Datum zu manipulieren, bitte Datetime-Objekt verwenden.

  • Schritt 1: Initialisieren das Datum
  • Schritt 2: ein Intervall von 1 Tag erstellen.
  • Schritt3: Fügen Sie dieses Intervall zu Ihrem Datum hinzu
  • Schritt 4: Rückgabedatum als Zeichenfolge.

Es funktioniert auch, wenn Sie der 28. Februar sind, 2008.

<?php 
//Step 1 
$date = new DateTime('2008-02-29'); //or new DateTime(date('Y-m-d')) for today 
//Step2 
$oneDay = new DateInterval('P1D') 
//Step3 
$date->add($oneDay); 
//Step4 will return 1 (March 1st) 
echo $date->format('d') . "\n"; 

das nächste Vorkommen zu finden:

$nextOccurence = new DateTime(); 
while ($day != $nextOccurence->format('d')){ 
    $nextOccurence->add($oneDay); 
} 
+0

Was macht P10D? –

+0

Sorry, das ist P1D, habe ich bearbeitet.Das bedeutet: ** P ** eriode ** 1 ** ** D ** ay. –

+0

Ich lief das, aber es ist nur zu der Anzahl der Tage .. Ich muss das nächste Vorkommen eines Tages bekommen .. –

0

testen, verwendet strtotime und 1 Monat aus (wenn Monat ist Februar dann erhalten Sie letzten Tag des nächsten Monats) und fügen Sie +1 Tag hinzu.

function nextOccurrence($day) { 
    $date_d = date('d');  
    if ($date_d <= $day) { 
     if($date_d > 28) 
     { 
      $get_date = date("d-m-Y", strtotime("last day of next month")); 
     } 
     else 
     { 
      $get_date = date("d-m-Y", strtotime("+1 month")); 
     } 
    } 
    else 
    { 
     $stop_date = date('Y-m-d H:i:s', strtotime($get_date . ' +1 day')); 
    } 
    echo $stop_date; 
} 

DEMO

+0

Danke .. aber ich sehe nicht, wo ich den Eingang $ Tag setzen kann? –

+0

@ Mubashar Abbas: übergeben Sie Ihr Datum in $ date_d. – Dave

+0

ok ich setze '$ date_d' auf 20, jetzt sollte das Ergebnis' 2016-12-20 00: 00: 00' sein, aber es gab '2017-01-20 00: 00: 00' –

0

Sie bitte den Code unten verweisen:

function nextOccurrence($day) { 
    $today = date("d"); 
    if ($today <= $day) { 
     return $retDate = date("d-M-Y", strtotime(date("Y-m-d") . '+1 month')); 
    } else { 
     return $retDate = date("d-M-Y", strtotime(date("Y-M-$d") . "+1 day")); 
    } 

} 

Hoffnung Problem gelöst.

+0

19-Jan-2017 gibt es das für 20 und 21 zurück. –

+0

return $ retDate = Datum ("$ day-M-Y", strtotime (Datum ("Y-m-d"). "+1 Monat")); – Anshul

+0

ersetzen Sie über die Linie mit der ersten Rückkehr – Anshul

Verwandte Themen