我很乐意帮助那些不起作用的代码 我想看看该项目是否在上个月发布。 如果是,那么得到肯定的结果。
//$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得到一个答案是否过去一个月
如果有人理解并且可以帮助我会很高兴。
答案 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...
}