如何找出5天前的日期?

Yet*_*eti 52 php

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

$days_ago = date('Y-m-d', mktime(0, 0, 0, date("m") , date("d") - 5, date("Y")));
Run Code Online (Sandbox Code Playgroud)

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

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

Mik*_*ike 109

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

$days_ago = date('Y-m-d', strtotime('-5 days', strtotime('2008-12-02')));
Run Code Online (Sandbox Code Playgroud)

  • $ n5_daysAgo = date('Ym-d',strtotime('-5 days',time())); @Limon我认为更好 (3认同)
  • 由于 strtotime 有默认的第二个参数 `time()`,`$n5_daysAgo = date('Ym-d', strtotime('-5 days'));` 足以让代码更清晰 (3认同)

小智 13

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

$date = strtotime(date("Y-m-d", strtotime("-5 day")));
Run Code Online (Sandbox Code Playgroud)

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

$date = strtotime(date("Y-m-d", strtotime("-n day")));
Run Code Online (Sandbox Code Playgroud)


zne*_*eak 11

define('SECONDS_PER_DAY', 86400);
$days_ago = date('Y-m-d', time() - 5 * SECONDS_PER_DAY);
Run Code Online (Sandbox Code Playgroud)

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

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

或者,正如您所使用的那样,mktime:

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

好吧,你明白了.关键是从时间戳中删除足够的秒数.


its*_*zad 8

特定日期前5天:

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


Kri*_*gid 7

只需这样做:

$fifteendaysago = date_create('15 days ago');
echo date_format($fifteendaysago, 'Y-m-d');
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 5

尝试这个

$date = date("Y-m-d", strtotime("-5 day"));
Run Code Online (Sandbox Code Playgroud)