我是PHP新手
当我尝试这样做时
if( date('m-Y',strtotime('2016-11-01 00:00:00')) < date('m-Y') ) {
echo "yes";
} else {
echo 'no';
}
但它总是做错[输出'不']。
我必须比较月份少于当月,意味着比较日期没有相同的月份
比较那个日期我错了吗?
答案 0 :(得分:2)
使用DateTime
比较日期:
$date = new DateTime('2016-11-01 00:00:00');
$now = new DateTime();
if ($date < $now && $date->format('m-Y') != $now->format('m-Y')) {
echo 'yes';
} else {
echo 'no';
}
答案 1 :(得分:0)
我复制了你的程序,使其显示为:
<?php
$x=date('m-Y',strtotime('2016-11-01 00:00:00'));
echo "$x\n";
$y=date("m-Y");
echo "$y\n";
if ($x < date('m-Y') ) {
echo "yes";
} else {
echo 'no';
}
在运行它时输出为:
# php x.php
11-2016
01-2017
no
这就是它失败的原因。如果您正在检查您需要检查相等的月份。否则,您需要将日期格式重新排序为“Y-m”(而非“m-Y”),以获得更少/更大的比较。比较字符串很好。
答案 2 :(得分:0)
Jdbc4ResultSetMetaData
函数总是返回一个字符串。在date
构造中,您可以比较两个字符串。目前时间:
if
在这种情况下,"11-2016" < "01-2017"
大于"11-2016"
。
最好使用"01-2017"
类。
DateTime
或在您的示例中,您需要将格式更改为$date = new DateTime('2016-11-01 00:00:00');
$now = new DateTime();
if ($date < $now && $date->format('m-Y') != $now->format('m-Y')) {
echo 'yes';
} else {
echo 'no';
}
。
答案 3 :(得分:-1)
您应该使用合适的格式来比较日期。而不是m-Y
,请使用Y-m-d
。
目前,您要将日期转换为字符串,并将其月份首先转换为字符串。因此,第一个日期变为11-2016
,第二个变为01-2017
。 PHP将这些字符串作为字符串进行比较,发现0
小于1
,因此认为第二个字符串更少。