Wie füge ich dem aktuellen Datum in PHP eine bestimmte Anzahl von Tagen hinzu?Anzahl der Tage bis zum aktuellen PHP-Datum erhöhen()
Ich habe bereits das aktuelle Datum mit:
$today = date('y:m:d');
brauchen nur x Anzahl der Tage, um es
Wie füge ich dem aktuellen Datum in PHP eine bestimmte Anzahl von Tagen hinzu?Anzahl der Tage bis zum aktuellen PHP-Datum erhöhen()
Ich habe bereits das aktuelle Datum mit:
$today = date('y:m:d');
brauchen nur x Anzahl der Tage, um es
php
unterstützt c Stil Datumsfunktionen. Sie können Datumsperioden mit englischen Sprachsätzen über die Funktion strtotime
hinzufügen oder subtrahieren. 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"));
pro Tag ist 86.400 Sekunden hinzuzufügen.
$tomorrow = date('y:m:d', time() + 86400);
Obwohl aus Gründen der Lesbarkeit Gründen Sie die Integer überall als Service-Leistung verwenden shoudn't. Definieren Sie irgendwo const oder benutzen Sie 60 * 60 * 24, damit klar ist, was die Zahl darstellt. –
ich benutze 86400 so oft, dass es jetzt so offensichtlich ist wie es ist, dass es 60 Sekunden pro Minute gibt :). Wenn ich viele Zeitfunktionen mache, dann erkläre ich es oft als Konstante. – nickf
Nicht jeden Tag sind 86400 Sekunden :) Tag Licht sparen ... – WayFarer
Die date_add()
Funktion sollte tun, was Sie wollen. Überprüfen Sie außerdem die Dokumente (inoffiziell, aber die offiziellen sind ein wenig spärlich) für das Objekt DateTime
, es ist viel schöner, mit den prozeduralen Funktionen in PHP zu arbeiten.
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;
ausgeben wird
2012-12-24
2012-12-25
2012-12-26
Die einfachste w um x nein hinzuzufügen. .. Tage
echo date('Y-m-d',strtotime("+1 day")); //+1 day from today
oder von bestimmten Datum ...
echo date('Y-m-d',strtotime("+1 day", strtotime('2007-02-28')));
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 verwenden:
$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);
<?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>
mit der Funktion strtotime() ist sehr teuer und wäre massiv Overkill, wenn Sie nur ein paar Tage hinzufügen möchten. – nickf
Klingt wie vorzeitige Optimierung. Wenn es sich nicht um ein zeitkritisches Stück Code handelt und wir keinen Grund haben, es zu denken, ist das Brennen von ein paar Millisekunden nichts im Vergleich zu den Kosten der Programmierzeit. –