这里我正在检查当前日期到上一个日期的日期,当减去日期的结果是当前日期时它显示正确的消息。但是当减去的结果是前一个日期,如02-12-2014 - 4天它给出了28-11-2014。(02-12-2014> = 28-11-2014)的条件,它给出了错误。为什么它无法检查差异月份的差异。即使是日期的情况也是如此(04-12-2014> = 06-12-2014)。
<div class="box-content">
<div class="maq_cont">
<marquee direction="up" scrollamount="3" onMouseOut="this.setAttribute('scrollamount',3,0)" onMouseOver="this.setAttribute('scrollamount', 0, 0)" style="height:200px; margin-top:-10px; margin-bottom:-10px;">
<ul class="maq_li">
<?php
echo $work_date = "03-12-2014";
echo "<br>";
echo $day = "3";
echo "<br>";
echo $show_date = date( "d-m-Y", strtotime( "$work_date -$day day" ));
echo "<br>";
echo $cur_date= date( "d-m-Y" );
if ($cur_date >= $show_date) {
echo '<li>done</li>';
} else {
echo '<li>not done</li>';
}
?>
</ul>
</marquee>
</div>
</div>
答案 0 :(得分:2)
尝试 -
if(strtotime($cur_date)>=strtotime($show_date)){
这种情况正在发生,因为它们是strings
。
答案 1 :(得分:0)
您必须将年份放在日期字符串的开头,然后是月份,然后是日期。原因是:你没有比较日期,你比较字符串。它们将按字母顺序进行比较。
e.g。字符串日期'01.01.2015'
按字母顺序小于'02.01.2013'
,但此格式('Ymd'
)按此特殊顺序执行操作:'20150101'
按字母顺序排列,数字上大于{{ 1}}。
'20130102'
我更愿意与日期和令人敬畏的// this formatting will work
$show_date = date('Ymd', strtotime("$work_date -$day day"));
$cur_date = date('Ymd');
对象进行比较。这样做:
DateTime
if (new DateTime('NOW')
>= DateTime::createFromFormat('d-m-Y', $show_date))
{
echo '<li>done</li>';
} else {
echo '<li>not done</li>';
}
调用返回DateTime::createFromFormat()
个对象。第一个参数DateTime
的语法与您在$format
中使用的格式字符串相同。第二个参数是要解析的格式化日期字符串。阅读更多:
获得此date()
对象后,您可以像
DateTime
要将日期输出为字符串,请使用$date = DateTime::createFromFormat('d-m-Y', $show_date);
$date->modify('+1 days'); // one day later
函数:
format()
更多信息: