2010-04-12 6 views

Antwort

58

Hm, vielleicht so etwas wie diese;

echo date("F 1, Y", strtotime("-6 months")); 

EDIT;

Wenn Sie ein benutzerdefiniertes Datum angeben möchten;

echo date("F, 1 Y", strtotime("-6 months", strtotime("Feb 2, 2010"))); 
+2

Abgesehen davon, dass das Komma an der falschen Stelle in der Formatzeichenkette steht, sieht dies wie die beste Lösung aus (im Moment würde es "1. Oktober 2009" anstatt "1. Oktober 2009" anzeigen). – Powerlord

+0

+1 für schlau sein :) –

+0

gerade jetzt das zeigt »Okt, 1 2009« – knittl

9

Verwendung einer Kombination aus mktime und date:

$date_half_a_year_ago = mktime(0, 0, 0, date('n')-6, 1, date('y')) 

das neue Datum im Verhältnis zu einem bestimmten Zeitpunkt zu machen und heute nicht, rufen Sie date mit einem zweiten Parameter

$given_timestamp = getSomeDate(); 
$date_half_a_year_ago = mktime(0, 0, 0, date('n', $given_timestamp)-6, 1, date('y', $given_timestamp)) 

zur Ausgabe formatiert , verwenden Sie einfach date erneut:

echo date('F j, Y', $date_half_a_year_ago); 
+0

Ich habe kein PHP hier, um dies zu testen, aber akzeptiert mktime sogar negative Monate? Es wird dokumentiert, dass für ungültige Argumente false zurückgegeben wird. – Powerlord

+0

@omg Einhörner, ja, aus der Dokumentation: »mktime() ist nützlich für die Arithmetik und Validierung von Daten, da es automatisch den richtigen Wert für Eingaben außerhalb des Bereichs berechnet.« – knittl

7

Ein bisschen hackish aber funktioniert:

<?php 

$date = new DateTime("-6 months"); 
$date->modify("-" . ($date->format('j')-1) . " days"); 
echo $date->format('j, F Y'); 

?> 
+1

Oh, hey, ich tat es nicht Realisierter DateTime-Konstruktor akzeptiert -6 Monate. Ich fühle mich jetzt dumm. – Powerlord