簡體   English   中英

如何找出5天前的日期?

[英]How to find out what the date was 5 days ago?

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

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

但是,我如何從任何日期(而不僅僅是今天)找到 5 天前的內容?

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

我認為這樣做的可讀方式是:

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

在php中找出從今天起5天前的日期

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

從今天起用php找出n天前的日期

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

從特定日期起 5 天前:

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

好吧,你明白了。 關鍵是從時間戳中刪除足夠的秒數。

嘗試這個

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

只需這樣做...希望它有效

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

如果您想要一種知道算法的方法,或者上一個答案中提到的函數不可用:將日期轉換為儒略日數(這是一種計算從公元前 4713 年 1 月 1 日開始的天數的方法),然后減去五、再轉換回日歷日期(年、月、日)。 兩次轉換的算法來源是http://www.hermetic.ch/cal_stud/jdn.htmhttp://en.wikipedia.org/wiki/Julian_day 的第 9 節

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

找到相同的簡單方法是

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM