Wie man die vorhergehenden 3 Monate in php ex(Wenn ich DEC. sage, sollte es die vorhergehenden 3 Monate d.h., OCT NOV DEC anzeigen) erhält
Antworten
Zu viele Anzeigen?Sie können die strtotime
Funktion wie folgt:
echo date('M', strtotime('-3 month'));
Sie geben also frühere Daten mit einem Minuszeichen an.
echo date('M', strtotime('0 month'));
echo date('M', strtotime('-1 month'));
echo date('M', strtotime('-2 month'));
echo date('M', strtotime('-3 month'));
Ergebnisse:
Dec
Nov
Oct
Sep
Dasselbe können Sie tun, wenn Sie eine Schleife wie diese verwenden:
for ($i = -3; $i <= 0; $i++){
echo date('M', strtotime("$i month"));
}
Ergebnisse:
Sep
Oct
Nov
Dec
In der Dokumentation finden Sie viele weitere freundliche Schlüsselwörter für Datum und Uhrzeit strtotime
unterstützt:
Die gewählte Antwort ist fast richtig.
Die richtige Lösung ist:
for ($i = -3; $i <= 0; $i++){
echo date('M', strtotime("$i month", strtotime(date("Y-m-15"))));
}
Erklären Sie das: strtotime Standardimplementierung ist:
date ( string $format [, int $timestamp = time() ] ) : string
Wie Sie sehen können, gibt es einen Zeitstempel mit dem Standardwert: time().
Der letzte Termin ist der 31. März.
Weil es keinen 31. Februar gibt
echo date('M', strtotime("-1 month"));
wird im März zurückkehren
Andererseits:
echo date('M', strtotime("+1 month"));
wird im Mai zurückkehren (April wird übersprungen).
Aus diesem Grund müssen wir einen Zeitstempelwert einrichten, der ein sicheres Datum ist. Jedes Datum zwischen 1-28 ist sicher, weil jeder Monat ein solches Datum hat. In meinem Beispiel hatte ich 15. Tag des Monats wählen.
Das kann Ihnen helfen
<?php
$date = explode("-", "2016-08-31");
if($date[2]== "01"){$days = "-0 days";}else{$days = "-1 days";}
$time = strtotime($days, mktime(0, 0, 0, $date[1], $date[2], $date[0]));
$MTD = date('Y-m-01', strtotime('0 month'));
$M1 = date('Y-m-01', strtotime('-1 month'));
$M2 = date('Y-m-01', strtotime('-2 month'));
$M3 = date('Y-m-01', strtotime('-3 month'));
$rng = array();
$rng[$MTD] = strftime("%B, %Y", strtotime(" ", $time));
$rng[$M1] = strftime("%B, %Y", strtotime("first day of previous month", $time));
$rng[$M2] = strftime("%B, %Y", strtotime("-2 months", $time));
$rng[$M3] = strftime("%B, %Y", strtotime("-3 months", $time));
?>
Hier geben $MTD, $M1, $M2, $M3 das Datum in der Form "dd-mm-yyyy" und $rng[$MTD], $rng[$M1], $rng[$M2], $rng[$M3] das Datum in der Form "Name des Monats, Jahr" => (z. B. August 2016)