-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 タイムスタンプです。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
}

タイムスタンプを人間が読める形式の使用strftimeまたはdate機能に戻すには:

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 日からの秒数です。これから 1 週間分の秒数を差し引いて、1 週間前のエポック時間を取得できます。

→日付形式の 'Ymd' などのさまざまな文字列を含むdate()の詳細については、http: //php.net/manual/en/function.date.phpを参照してください。

于 2013-03-11T09:20:23.927 に答える