如何找出5天前的date?

那么,以下是5天前的date:

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

但是,我怎样才能find5天前的任何日子 ,而不仅仅是今天呢?

例如:2008-12-02之前的5天是什么?

我认为一个可读的方式是:

 $days_ago = date('Ym-d', strtotime('-5 days', strtotime('2008-12-02'))); 
 define('SECONDS_PER_DAY', 86400); $days_ago = date('Ym-d', time() - 5 * SECONDS_PER_DAY); 

除此之外,你可以使用strtotime任何date:

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

或者,如你所说,mktime:

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

那么,你明白了。 关键是要从时间戳中移除足够的秒数。

找出从今天起在5天前的date在PHP中

 $date = strtotime(date("Ymd", strtotime("-5 day"))); 

从今天在php找出date是什么

 $date = strtotime(date("Ymd", strtotime("-n day"))); 

5天前从特定的date:

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

如果你想要一个你知道algorithm的方法,或者上一个答案中提到的函数不可用:将date转换为儒略日号(这是从公元前4713年1月1日算起的日子),然后减去五,然后转换回日历date(年,月,日)。 这两种转换algorithm的来源是http://www.hermetic.ch/cal_stud/jdn.htm的第9部分或http://en.wikipedia.org/wiki/Julian_day

使用内置的date_sub和date_add函数来计算date。 (请参见http://php.net/manual/en/datetime.sub.php

类似于Sazzad的回答,但是在PHP的程序风格上,

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

用于date操作的通用algorithm将date转换为Julian Day Numbers和Julian Day Numbers。 下面是这些algorithm描述的链接,目前已知的最佳algorithm的描述以及每个algorithm的mathcertificate: http ://web.archive.org/web/20140910060704/http: //mysite.verizon .NET / aesir_research /date/ date0.htm