-2

所以基本上,我想弄清楚如何在 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; 

}
4

3 回答 3

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; 

}
于 2013-03-11T09:13:15.543 回答
2

你得到的那个数字就是所谓的 unix 时间戳——自 01.01.1970 以来的秒数,主要是你应该用它来做你想做的事情:

$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);

请阅读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) {
}
于 2013-03-11T09:17:06.210 回答
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') 获得的时间称为纪元时间或 Unix 时间 \POSIX 时间),它是自 1970 年 1 月 1 日以来的秒数。因此, time() 也为您提供了这个数字,然后,您可以从中减去 1 周的秒数,以获得一周前的纪元时间。

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

于 2013-03-11T09:20:23.927 回答