2010-07-16 79 views
1

,所以我有一個日期格式像10年7月9日,我想知道如何從該日期前獲得,如果我能有一個像條件PHP一週前從特定日期

if(is_date_with_1_week_of_above_date){ 
//do something 
} 

回答

1

你的日期沒有說明格式(是MM-DD-YY,DD-MM-YY,YY-MM-DD等)?但是,使用ISO 8601日期格式的例子是這樣的:

$oneWeekAgo = strftime("%Y-%m-%d", strtotime("2010-07-09") - 60*60*24*7);

對於一個比較,你可以使用UNIX時間戳的值

$date = "2010-07-09"; 
$compareDate = "2010-07-03"; 
$curTimestamp = strtotime($date); 
$compareTimestamp = strtotime($compareDate); 

if(abs($curTimestamp - $compareTimestamp) < 60*60*24*7) 
{ 
    // within 1 week 
} 

編輯

每評論日期格式,dd-mm-yy是用於日期的公認格式,但mm-dd-y不在時間上,如下所示:

http://www.php.net/manual/en/datetime.formats.date.php

對於它的工作,你必須將短劃線轉換爲斜線。

另外,如果你正在尋找,如果日期是專門提前一個星期,

$date = str_replace('-','/',"07-10-10"); 
$compareDate = str_replace('-','/',"07-03-10"); 
$curDate = strftime("%m/%d/%y", strtotime($date)); 
$compareDate = strftime("%m/%d/%y", strtotime($compareDate) + 60*60*24*7); 

if($curDate == $compareDate) 
{ 
    // is one week prior 
    echo "OK"; 
} 
+0

其2010年7月10日,我想找到07- 03-2010 – Trace 2010-07-16 01:33:06

+0

那就是: $ oneWeekAgo = strftime(「%m-%d-%Y」,strtotime(「07-10-2010」) - 60 * 60 * 24 * 7); 基本上,你正在轉換的東西秒,然後它是簡單的減法/加法從那裏。 60秒= 1分鐘,60分鐘= 1小時,24小時= 1天,7天= 1周。這適用於具有確定長度的事物,但對於具有變化的長度來說不太好。您如何定義1個「月」,因爲一個月的長度可能會有所不同? – Klinky 2010-07-16 01:51:34

5

對於有關檢查日期爲當前時間戳

if(strtotime('-1 week')>=$dateToCheck) { 
# $dateToCheck is within the last week 
} 

其他反應有很好的解決方案簡單檢查兩個日期/時間是否在一週之內 - 沒有意義的是我重複他們。

1

根據您的時區,有些日子可能只有23個小時,所以您不能使用一天的規則(60秒* 60分鐘* 24小時)並用此來計算特定日期。

指定日期:

$specific_date = date("Y-m-d"); // for today 

$specific_date = date("Y-m-d", $timestamp); // where timestamp is: Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) 

答案將是

$date = strtotime($specific_date . " -1 week");