PHP如果条件在今天的日期范围之前一周

时间:2013-03-11 09:08:08

标签: php

所以基本上,我想知道今天如何用PHP获取今天的日期。基本上我可以使用什么功能来获得它。

我尝试了以下内容:strtotime('now')但是这给了我一个类似1362992653的数字,我无法与之合作。

我试图按照以下格式20130311以今年/月/日的方式获取今天的日期,这样我就可以从中减去7。所以我的if语句看起来像这样

$todaydate = some function;
$mydate = 20130311 <-- will be in this format;
$oneweekprior = $todaydate - 7;

if ($mydate > $oneweekprior && $mydate < $todaysdate) { 

    then do my stuff; 

}

3 个答案:

答案 0 :(得分:3)

$todayEpoch = strtotime(date('Y-m-d'));
$mydate = strtotime('20130311');

$oneweekprior = $todayEpoch - 7*24*60*60;

if ($mydate > $oneweekprior && $mydate < $todaysdate) { 

    then do my stuff; 

}

答案 1 :(得分:2)

你得到的那个号码,即所谓的unix时间戳 - 自1970年1月1日以来的秒数,主要是你应该用来做你想做的事情:

$todaydate = time(); // same as strtotime('now'), but without overhead of parsing 'now'
$mydate = strtotime('20130311'); // turn your date into timestamp
$oneweekprior = $todaydate - 7*24*60*60; // today - one week in seconds
// or
//$oneweekprior = strtotime('-7 days');

if ($mydate > $oneweekprior && $mydate < $todaysdate) {
    // do something
}

使用strftimedate函数将时间戳恢复为人类可读形式:

echo strftime('%Y%m%d', $todaydate);

请阅读documentation了解PHP中的日期函数


比较你想要的日期的想法非常糟糕,我们假设今天是20130301,要检查的日期是20130228 - 你的解决方案就是:

$mydate = 20130228;
$today = 20130301;
$weekago = $today - 7;

// $mydate should pass this test, but it won't because $weekago is equal 20130294 !!
if ($mydate > $weekago && $mydate < $today) {
}

答案 2 :(得分:0)

试试这个:

    $now = time();

    $one_week_ago  = $now - ( 60 * 60 * 24 * 7 );
    $date_today    = date( 'Ymd', $now );
    $date_week_ago = date( 'Ymd', $one_week_ago );

    echo 'today: '    . $date_today    . '<br /><br />';
    echo 'week-ago: ' . $date_week_ago . '<br /><br />';

您从strtotime('now')获得的时间称为 Epoch Time 或Unix time \ POSIX time ),这是数字自1970年1月1日以来的秒数。所以,time()也会给你这个数字,你可以从一周前减去1周的秒数来获得纪元时间。

→有关日期()的更多信息,包括日期格式的“Ymd”等不同字符串,请访问:http://php.net/manual/en/function.date.php