PHP中的年份比较

时间:2012-07-18 21:51:30

标签: php date if-statement comparison

        if($_POST['syear']){
            $compy = strtotime($_POST['syear']);
            if(date("Y") <= date("Y", $compy)){
                //success
                $startdate = $_POST['syear'];
            }
            else{
                $error = 6;
            }
        }

我创建了上面的代码并且不知道我哪里出错了。我从一个带有数字的表单中发布一个字符串,并希望将其与当前年份进行比较。如果该数字等于或小于当前年份,那么它应该是成功的。即使数量大于当前年份,它也总是成功的。我是否需要将一些字符串转换为整数或者我完全错过了一些东西。

4 个答案:

答案 0 :(得分:5)

PHP处理字符串比较非常好,你直接尝试了吗? (并将比较顺序更改为&gt; =)

if($_POST['syear']){
    if(date("Y") >= $_POST['syear']){
        $startdate = $_POST['syear'];
    }else{
        $error = 6;
    }
}

答案 1 :(得分:1)

你不能简单地转换一年。按原样使用您的示例,您需要使用yyyy / mm / dd格式的字符串才能使用strtotime。如果您真的只是检查年份,您可以使用1月1日作为检查日期。

 $compy = strtotime($_POST['syear'] . '-01-01' );

答案 2 :(得分:0)

您可以用相同的方式比较整数或字符串。如果你想确定类型比较,你总是可以转换变量,但在这种情况下它是没有意义的。 2012年不如2013年。“2012”不如“2013”​​。 date('Y')返回一个4个字符的字符串,如果它是一个4个字符的字符串,你可以将其与$ _POST ['syear']进行比较。希望这会有所帮助。

答案 3 :(得分:-1)

你可以尝试

if(time() <= $compy){

因为你已经在最初的任何比赛中做strtotime()了。这样你就可以使用2个unix时间戳并以这种方式进行比较。