如何找出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