从可变日期起5天

时间:2013-06-18 15:53:41

标签: php date

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天'。我永远无法让它回归'还没' 为什么呢?

4 个答案:

答案 0 :(得分:1)

尝试按YYYY-MM-DD指定日期。 strtotime似乎不支持MM-DD-YYYY表示法。

答案 1 :(得分:1)

您需要使用的是$date = '17-06-2013';(DD-MM-YYYY)

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

而不是

<击> $date = '06-17-2013';

答案 2 :(得分: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";
}

答案 3 :(得分: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.