1
date_default_timezone_set('Europe/London');
$date = '06-17-2013';

if (strtotime("now") > strtotime("+5 days", strtotime($date))) {
   echo '5 days have gone by';
} else {
   echo 'not yet';
}

この関数は常に '5 days has gone by' を返します。「まだ」を返すことができませんでした なぜですか?

4

4 に答える 4

1

で日付を指定してみてくださいYYYY-MM-DD。表記strtotimeをサポートしていないようです。MM-DD-YYYY

于 2013-06-18T15:58:31.593 に答える
1

使用する必要があるのは$date = '17-06-2013'; (DD-MM-YYYY)です

または$date = '2013-06-17';(YYYY-MM-DD)

そしてそうではない

$date = '06-17-2013';

于 2013-06-18T15:58:37.890 に答える
1

これに変更'06-17-2013'する'06/17/2013'と、期待どおりに動作します

<?php
date_default_timezone_set('Europe/London');
$date = '06/17/2013';

if (strtotime("now") > strtotime("+5 days", strtotime($date))) {
   echo '5 days have gone by';
} else {
   echo 'not yet';
}
?>

strtotime 関数では、スラッシュ / とハイフン - の使用には違いがあります。

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator   
between the various components: if the separator is a slash (/), then the American 
m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the 
European d-m-y format is assumed.
于 2013-06-18T16:19:20.400 に答える
1

SPL DateTime オブジェクトの使用を検討する必要があります。

これを試して:

$date = new DateTime('2013-06-17');
$date->add(new DateInterval("P5D");
$now = new DateTime();
if($now > $date) {
    echo "5 Days have passed";
}
else{
    echo "not yet";
}
于 2013-06-18T16:00:54.270 に答える