2013-06-12 202 views
4

我正在嘗試爲一週之內的元素創建一個選擇器。我得到了這樣的時間戳Sun, 02 Jun 2013 22:05:00 GMT,但選擇器不應該受到時間的影響php一個星期前得到日期

E.G.

<? 

$curdate = date('D, d M Y H:I:s'); 
$olddate = "Sun, 02 Jun 2013 22:05:00 GMT"; 

if($curdate < $olddate){ 
    //date is with in a week 
    }{ 
     //date is older then a week 
     } 


?> 

但是在這種情況下,它不應該受到當天在線時間的影響。但我無法得到它的工作...

+0

可能重複【如何計算和過去得到一個日期(例如3個星期前)從今天的日期(PHP)](http://stackoverflow.com/questions/4575364/how-to-calculate-and-get-a-date-in-the-past-eg-3-幾周前從今天開始) – vascowhite

+0

不,@vascowhite,這個問題是如何在一週內比較日期! – xvilo

+0

問題是,那裏的答案也會回答你的問題,因此它是重複的。 – vascowhite

回答

5

您應該只從compariondate創建一個日期。之後,您應該創建給定日期的時間戳Sun, 02 Jun 2013 22:05:00 GMT,並且應該只將日期轉換爲日期字符串。然後創建另一個時間戳出來的那個....

如果你知道我的意思......這應該工作:

<?php 
    // First create the date 

    $date = 'Sun, 02 Jun 2013 22:05:00 GMT'; 

    // To a timestamp 
    $t_date = strtotime($date); 

    // Noew remove the seconds: First create a new date, with a timestamp of the give date. 
    // After that create a datestring with only the date 
    $date = date("jS F Y", $t_date); 
    // And create a new timestamp 
    $t_date = strtotime($date); 

    // One week back: time - 60 seconds * 60 minutes * 24 hours * 7 days * -1 to get backwards 
    // And we only create a date of this 
    $weekback = date('jS F Y', time() + (60 * 60 * 24 * -7)); 
    // Create a timestamp 
    $t_weekback = strtotime($weekback); 

    // Debug 
    echo "Date: $date<br/>Date (UTC): $t_date<br/>"; 
    echo "Last week: $weekback<br/>Last week (UTC): $t_weekback<br/>"; 

    if ($t_date <= $t_weekback) { 
     //Date is older then a week 
     echo "Outside a week: last week($t_date) <= The date($t_weekback)"; 
    }else{ 
     //Date is within a week 
     echo "Within a week: $t_date > $t_weekback"; 
    } 
?> 
24

PHP的strtotime()函數是你在找什麼。

例如:

echo date('jS F Y H:i.s', strtotime('-1 week')); 

您可以在許多不同的字符串的飼料進入strtotime()功能,如:

strtotime('yesterday'); 
strtotime('-2 days ago'); 
strtotime('+5 days'); 
+1

謝謝!但我用xvilo的答案! – xvilo

2

當您使用PHP> = 5.3,你可以使用以下:

<?php 

$date  = new DateTime('Sun, 02 Jun 2013 22:05:00 GMT'); 
$interval = new DateInterval('P1W'); 

if(new DateTime() < $date->add($interval)){ 
    //date is with in a week 
}{ 
    //date is older then a week 
} 
+0

由於某種原因,我得到這個: 致命錯誤:未知的異常'異常'與消息'DateInterval :: __構造()[dateinterval.--construct]:未知或錯誤的格式(PT1W)'在/ home/xvilo/**** */jonginnopmail.php:24 Stack trace:#0 /home/xvilo/*****/jonginnopmail.php(24):DateInterval - > __ construct('PT1W')#1/home/xvilo/**** */jonginnopmail.php(717):getFeed('http:// jonginno ...')#2 {main}引發24行中的/home/xvilo/*****/jonginnopmail.php – xvilo

+0

我的錯誤。它必須讀取'P1W'而不是'PT1W'。我已經改變了答案 – heiglandreas

+1

啊,好的,謝謝!但xvilo的答案正在工作! – xvilo

相關問題