怎样才能知道5天前的日期?

下面是5天前的日期:

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

但是,我怎样才能找到5天前的 任何日期,而不仅仅是今天?

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

127247 次浏览
define('SECONDS_PER_DAY', 86400);
$days_ago = date('Y-m-d', time() - 5 * SECONDS_PER_DAY);

除此之外,你可以在任何日期使用 strtotime:

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

或者,像您使用的那样,mktime:

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

你懂的,关键是要从时间戳中删除足够多的秒。

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

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

如果你想要一个你知道算法的方法,或者前一个答案中提到的函数不可用: 将日期转换为儒略日数(这是一种从公元前4713年1月1日开始计算天数的方法) ,然后减去5,再转换回日历日期(年、月、日)。这两个转换的算法来源于 http://www.hermetic.ch/cal_stud/jdn.htmhttp://en.wikipedia.org/wiki/Julian_day的第9节

五天前的一个特定日期:

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

使用内置的 date _ sub 和 date _ add 函数对日期进行计算(参见 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, 'Y-m-d'); //outputs 2008-11-27

日期操作的一般算法将日期与儒略日数字之间进行转换。下面是这些算法的描述,目前已知的最佳算法的描述,以及每种算法的数学证明: Http://web.archive.org/web/20140910060704/http://mysite.verizon.net/aesir_research/date/date0.htm

找出5天前的日期,从今天开始在 php

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

找出几天前的日期,从今天开始

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

试试这个

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

只要这么做,希望能成功

$fifteendaysago = date_create('15 days ago');
echo date_format($fifteendaysago, 'Y-m-d');

找到相同点的简单方法是

$date = date("Y-m-d", strtotime('-5 days', strtotime('input_date')));