检查过去一个月或不是PHP

时间:2012-10-03 11:47:37

标签: php date time

我很乐意帮助那些不起作用的代码 我想看看该项目是否在上个月发布。 如果是,那么得到肯定的结果。

    //$project_time="2012-08-01 13:43:49";
    $project_time="2012-10-02 14:05:09";
 $end=mktime(0,0,0,date("m",strtotime($project_time))+1,date("d",strtotime($project_time)),d    ate("y",strtotime($project_time)));
 $end=date("d.m.y",$end);
 $today=mktime(0,0,0,date("m"),date("d"),date("y"));
 $today=date("d.m.y",$today);    

echo 'Project date '.$date.'<br />';
echo 'End date '.$end.'<br />';
echo 'Today '.$today.'<br />';

if($today<$end){
  echo " open<br />";
}
else{
  echo " finish<br />";
}

PROJECT_TIME首先给出一个好结果而另一个没有。   $ end根据$ PROJECT_TIME加上一个月创建日期。 可变数据TOTDAY获取今天的日期。 比较我想从PROJECTTIME得到一个答案是否过去一个月

如果有人理解并且可以帮助我会很高兴。

3 个答案:

答案 0 :(得分:1)

strtotime是您要使用的功能。只需使用以下语法:

$end = date('d.m.y', strtotime('+1 month', strtotime($project_time));

修改

人们对比较字符串的看法是正确的。不要比较字符串,比较时间戳。

答案 1 :(得分:0)

尝试将其重写为:

$project_time = "2012-10-02 14:05:09";
$project_endtimestamp = strtotime('+1 month', strtotime($project_time));

echo 'Project date ' . $date . '<br />';
echo 'End date ' . date('d.m.y', $project_endtimestamp) . '<br />';
echo 'Today ' . date('d.m.y') . '<br />';

if (time() < $project_endtimestamp) {
    echo " open<br />";
} else {
    echo " finish<br />";
}

编辑:没有完全理解这个问题。根据@Simon Germain回答在+1 month来电中添加了strtotime

答案 2 :(得分:0)

基本问题:你正在比较两个“d.m.y”字符串。

这总是会失败,因为PHP将它们视为纯文本,而不是日期。因此,询问哪一个更大通常会给出错误的答案。

另外:使用旧式日期处理功能摆脱所有疯狂。如今,PHP有更好的方法来做这类事情。

$project_time="2012-10-02 14:05:09";

$projDate = DateTime::createFromFormat('Y-m-d H:i:s', $project_time);
$dateNow = new DateTime();
if($projDate < $dateNow) {
    ... do something here...
}