2010-04-25 3 views
41

Nun, gibt folgende Formel, welche 5 Tage Datum war vor:Wie finde ich heraus, wie das Datum vor 5 Tagen war?

$days_ago = date('Y-m-d', mktime(0, 0, 0, date("m") , date("d") - 5, date("Y"))); 

Aber wie finde ich was von jeden Zeitpunkt, nicht nur heute vor 5 Tagen war?

Zum Beispiel: Was war 5 Tage vor 2008-12-02?

Antwort

83

Ich denke, eine lesbare Art und Weise, dies zu tun ist:

$days_ago = date('Y-m-d', strtotime('-5 days', strtotime('2008-12-02'))); 
+0

Dieser funktioniert perfekt. Vielen Dank! – Yeti

+0

Ich denke, das Datum sollte ein Parameter sein, wie $ dateNow = (new \ DateTime()) -> Format ('d-m-Y'); $ daysAgo = Datum ('d-m-Y', strtotime ('- 5 Tage, strtotime ($ dateNow))); – Limon

+1

Gute Eins. Danke – Adi

9
define('SECONDS_PER_DAY', 86400); 
$days_ago = date('Y-m-d', time() - 5 * SECONDS_PER_DAY); 

Other than that, Sie strtotime für jedes Datum verwenden:

$days_ago = date('Y-m-d', strtotime('January 18, 2034') - 5 * SECONDS_PER_DAY); 

Oder, wie Sie verwendet, Mktime:

$days_ago = date('Y-m-d', mktime(0, 0, 0, 12, 2, 2008) - 5 * SECONDS_PER_DAY); 

Nun, Sie es. Der Schlüssel ist, genug Sekunden aus dem Zeitstempel zu entfernen.

+0

Cool, aber ich habe das Datum 2008-12-02 in einem Variable $ the_date. Wie geht es in diesem Fall? – Yeti

+0

@Lost_in_code: Sie hätten 'strtotime' damit benutzt. – zneak

1

Wenn Sie eine Methode wollen, in dem Sie den Algorithmus kennen, oder die in der vorherige Antwort erwähnten Funktionen stehen nicht zur Verfügung: convert das Datums Julian Day-Nummer (was eine Art ist, Tage vom 1. Januar 4713 v. Chr. Zu zählen), dann subtrahieren Sie fünf und konvertieren Sie dann zurück zum Kalenderdatum (Jahr, Monat, Tag). Quellen der Algorithmen für die beiden Konvertierungen Abschnitt 9 von http://www.hermetic.ch/cal_stud/jdn.htm oder http://en.wikipedia.org/wiki/Julian_day

3

Vor 5 Tagen ab einem bestimmten Datum:

$date = new DateTime('2008-12-02'); 
$date->sub(new DateInterval('P5D')); 
echo $date->format('Y-m-d') . "\n"; 
0

Verwenden Sie die integrierte in DATE_SUB und date_add Funktionen Mathe mit Terminen. (Siehe http://php.net/manual/en/datetime.sub.php)

ähnlich Sazzad Antwort, aber in prozeduralen Stil PHP,

$date = date_create('2008-12-02'); 
date_sub($date, date_interval_create_from_date_string('5 days')); 
echo date_format($date, 'Y-m-d'); //outputs 2008-11-27 
8

herauszufinden, was das Datum war vor 5 Tagen heute in PHP

$date = strtotime(date("Y-m-d", strtotime("-5 day"))); 

herauszufinden, was das Datum von heute vor n Tagen war in pHP

$date = strtotime(date("Y-m-d", strtotime("-n day"))); 
Verwandte Themen