那么,以下返回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)
小智 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)
好吧,你明白了.关键是从时间戳中删除足够的秒数.
特定日期前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)
只需这样做:
$fifteendaysago = date_create('15 days ago');
echo date_format($fifteendaysago, 'Y-m-d');
Run Code Online (Sandbox Code Playgroud)