Frage

Wie füge ich eine bestimmte Anzahl von Tagen bis zum aktuellen Datum in PHP?

Ich habe bereits das aktuelle Datum mit:

$today = date('y:m:d');

Nur müssen x Anzahl der Tage, um es hinzuzufügen

War es hilfreich?

Lösung

php unterstützt Datumsfunktionen c Stil. Sie können mit englischsprachigem Stil Phrasen über die strtotime Funktion oder subtrahieren Datum Perioden hinzuzufügen. Beispiele ...

$Today=date('y:m:d');

// add 3 days to date
$NewDate=Date('y:m:d', strtotime("+3 days"));

// subtract 3 days from date
$NewDate=Date('y:m:d', strtotime("-3 days"));

// PHP returns last sunday's date
$NewDate=Date('y:m:d', strtotime("Last Sunday"));

// One week from last sunday
$NewDate=Date('y:m:d', strtotime("+7 days Last Sunday"));

oder

<select id="date_list" class="form-control" style="width:100%;">
<?php
$max_dates = 15;
$countDates = 0;
while ($countDates < $max_dates) {
    $NewDate=Date('F d, Y', strtotime("+".$countDates." days"));
    echo "<option>" . $NewDate . "</option>";
    $countDates += 1;
}
?>

Andere Tipps

ein Tag ist 86.400 Sekunden.

$tomorrow = date('y:m:d', time() + 86400);

Der einfachste Weg x nicht hinzuzufügen. Tage ..

echo date('Y-m-d',strtotime("+1 day"));    //+1 day from today

oder von bestimmtem Datum ...

echo date('Y-m-d',strtotime("+1 day", strtotime('2007-02-28')));

Die date_add() Funktion sollte das tun, was Sie wollen. Darüber hinaus überprüfen die Dokumentation aus (nicht offiziell, aber die Offiziellen sind etwas spärlich) für die DateTime Objekt, es ist viel schöner, mit zu arbeiten, als die Verfahrensfunktionen in PHP.

Mit PHP 5.3

    $date = new DateTime();
    $interval = new DateInterval('P1D');
    echo $date->format('Y-m-d') , PHP_EOL;
    $date->add($interval);
    echo $date->format('Y-m-d'), PHP_EOL;
    $date->add($interval);
    echo $date->format('Y-m-d'), PHP_EOL;

Wille Ausgang

2012.12.24

2012.12.25

2012-12-26

Wenn Sie diesen Code an mehreren Stellen benötigen, dann würde ich vorschlagen, dass Sie eine kurze Funktion fügen Sie Ihren Code einfacher zu halten und einfacher zu testen.

function add_days( $days, $from_date = null ) {
    if ( is_numeric( $from_date ) ) { 
        $new_date = $from_date; 
    } else { 
        $new_date = time();
    }

    // Timestamp is the number of seconds since an event in the past
    // To increate the value by one day we have to add 86400 seconds to the value
    // 86400 = 24h * 60m * 60s
    $new_date += $days * 86400;

    return $new_date;
}

Dann können Sie es überall wie folgt aus:

$today       = add_days( 0 );
$tomorrow    = add_days( 1 );
$yesterday   = add_days( -1 );
$in_36_hours = add_days( 1.5 );

$first_reminder  = add_days( 10 );
$second_reminder = add_days( 5, $first_reminder );
$last_reminder   = add_days( 3, $second_reminder );

Fügen Sie 15 Tage auf ein Auswahlelement ( "Alive to Die" Anregung verwendet wird)

<select id="date_list" class="form-control" style="width:100%;">
<?php
$max_dates = 15;
$countDates = 0;
while ($countDates < $max_dates) {
    $NewDate=Date('F d, Y', strtotime("+".$countDates." days"));
    echo "<option>" . $NewDate . "</option>";
    $countDates += 1;
}
?>

$NewDate=Date('Y-m-d', strtotime("+365 days"));
  

echo $ NewDate; // 2020.05.21

$NewTime = mktime(date('G'), date('i'), date('s'), date('n'), date('j') + $DaysToAdd, date('Y'));

Mktime Dokumentation :

  

mktime () ist nützlich für die Datumsberechnungen und Validierung zu tun, da sie automatisch den richtigen Wert für Out-of-Range-Eingang werden berechnen.

Der Vorteil dieser Methode ist, dass Sie jedes Zeitintervall addieren oder subtrahieren können (Stunden, Minuten, Sekunden, Tage, Monate oder Jahre) in einem einfachen Codezeile zu lesen.

Beware gibt es einen Kompromiss in der Leistung, wie dieser Code über 2,5x langsamer als strtotime ist ( „+ 1 Tag“) aufgrund aller Anrufe auf das Datum () Funktion. Erwägen Sie wiederverwenden diese Werte, wenn Sie in einer Schleife sind.

<?php
$dt = new DateTime;
if(isset($_GET['year']) && isset($_GET['week'])) {
    $dt->setISODate($_GET['year'], $_GET['week']);
} else {
    $dt->setISODate($dt->format('o'), $dt->format('W'));
}
$year = $dt->format('o');
$week = $dt->format('W');
?>

<a href="<?php echo $_SERVER['PHP_SELF'].'?week='.($week-1).'&year='.$year; ?>">Pre Week</a> 
<a href="<?php echo $_SERVER['PHP_SELF'].'?week='.($week+1).'&year='.$year; ?>">Next Week</a>
<table width="100%" style="height: 75px; border: 1px solid #00A2FF;">
<tr>
<td style="display: table-cell;
    vertical-align: middle;
    cursor: pointer;
    width: 75px;
    height: 75px;
    border: 4px solid #00A2FF;
    border-radius: 50%;">Employee</td>
<?php
do {
    echo "<td>" . $dt->format('M') . "<br>" . $dt->format('d M Y') . "</td>\n";
    $dt->modify('+1 day');
} while ($week == $dt->format('W'));
?>
</tr>
</table>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top