wake-up-neo.com

Einen Tag zu einem Datum hinzufügen

Mein Code zum Hinzufügen eines Tages zu einem Datum gibt ein Datum vor dem Tag zurück und fügt Folgendes hinzu: 2009-09-30 20:24:00 Datum nach dem Hinzufügen eines Tages SOLLTE auf den nächsten Monat übertragen werden: 1970-01-01 17:33:29

<?php

    //add day to date test for month roll over

    $stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00"));

    echo 'date before day adding: '.$stop_date; 

    $stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date));

    echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date;
?>

Ich habe schon ziemlich ähnlichen Code verwendet. Was mache ich hier falsch?

134
ian
<?php
$stop_date = '2009-09-30 20:24:00';
echo 'date before day adding: ' . $stop_date; 
$stop_date = date('Y-m-d H:i:s', strtotime($stop_date . ' +1 day'));
echo 'date after adding 1 day: ' . $stop_date;
?>

Für PHP 5.2.0+ können Sie auch Folgendes tun:

$stop_date = new DateTime('2009-09-30 20:24:00');
echo 'date before day adding: ' . $stop_date->format('Y-m-d H:i:s'); 
$stop_date->modify('+1 day');
echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s');
275
w35l3y
$date = new DateTime('2000-12-31');

$date->modify('+1 day');
echo $date->format('Y-m-d') . "\n";
80
Prasanth Bendra

Einfachste Lösung:

$date = new DateTime('+1 day');
echo $date->format('Y-m-d H:i:s');
25
minlare

Es hat für mich funktioniert: Für das aktuelle Datum

$date = date('Y-m-d', strtotime("+1 day"));

für anydate:

date('Y-m-d', strtotime("+1 day", strtotime($date)));
13
Jay Momaya

Versuche dies

echo date('Y-m-d H:i:s',date(strtotime("+1 day", strtotime("2009-09-30 20:24:00"))));
6
user1987095

Einfach zu lesen und zu verstehen:

$original_date = "2009-09-29";

$time_original = strtotime($original_date);
$time_add      = $time_original + (3600*24); //add seconds of one day

$new_date      = date("Y-m-d", $time_add);

echo $new_date;
5
joan16v

Ich füge immer nur 86400 (Sekunden pro Tag) hinzu:

$stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00") + 86400);

echo 'date after adding 1 day: '.$stop_date; 

Es ist nicht die glatteste Art, wie Sie es wahrscheinlich tun könnten, aber es funktioniert!

2
Doug Hays

Die modify()-Methode, mit der Inkremente zu einem vorhandenen DateTime-Wert hinzugefügt werden können.

Erstellen Sie ein neues DateTime-Objekt mit dem aktuellen Datum und der aktuellen Uhrzeit:

$due_dt = new DateTime();

Sobald Sie das DateTime -Objekt haben, können Sie seinen Wert bearbeiten, indem Sie Zeiträume hinzufügen oder entfernen:

$due_dt->modify('+1 day');

Weitere Informationen finden Sie im PHP Manual .

1
Kal

Obwohl ich mit der Antwort von Doug Hays einverstanden bin, erkläre ich hier, um zu sagen, dass Ihr Code nicht funktioniert, weil strtotime () ein INT als zweites Argument erwartet, nicht eine Zeichenfolge (auch nicht die eine stellt ein Datum dar)

Wenn Sie die Max-Fehlerberichterstattung aktivieren, wird dies als Fehler "Ein nicht gut ausgebildeter numerischer Wert" (E_NOTICE-Ebene) angezeigt.

1
Peter Bailey

Der folgende Code ruft den ersten Januar-Tag des aktuellen Jahres ab (kann jedoch ein anderes Datum sein) und fügt diesem Tag 365 Tage hinzu (es kann jedoch N Anzahl von Tagen sein), und zwar mithilfe der DateTime-Klasse und ihrer Methode changes () und format ( ):

echo (new DateTime((new DateTime())->modify('first day of January this year')->format('Y-m-d')))->modify('+365 days')->format('Y-m-d');
0
Carlos Espinoza