如何找出5天前的日期?

时间:2010-04-25 16:20:02

标签: php

嗯,以下返回5天前的日期:

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

但是,如何从任何日期找到5天前的内容,而不仅仅是今天?

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

9 个答案:

答案 0 :(得分:102)

我认为这样做的可读方式是:

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

答案 1 :(得分:13)

在今天的PHP中找出5天前的日期

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

在今天的php中找出n天前的日期

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

答案 2 :(得分:11)

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);

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

答案 3 :(得分:4)

5天前从特定日期开始:

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

答案 4 :(得分:4)

尝试一下

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

答案 5 :(得分:1)

如果你想要一种你知道算法的方法,或者上一个答案中提到的功能不可用:将日期转换为朱利安日数(这是计算公元前4713年1月1日的天数) ,然后减去5,然后转换回日历日期(年,月,日)。两次转换算法的来源是http://www.hermetic.ch/cal_stud/jdn.htmhttp://en.wikipedia.org/wiki/Julian_day

的第9部分

答案 6 :(得分:0)

使用内置的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

答案 7 :(得分:0)

只需执行此操作...希望对您有帮助

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

答案 8 :(得分:0)

找到相同内容的简单方法是

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