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

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

4

4 回答 4

5

PHP 对字符串比较的处理很好,你直接试试这个吗?(并将比较顺序更改为 >=)

if($_POST['syear']){
    if(date("Y") >= $_POST['syear']){
        $startdate = $_POST['syear'];
    }else{
        $error = 6;
    }
}
于 2012-07-18T21:54:36.003 回答
1

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

 $compy = strtotime($_POST['syear'] . '-01-01' );
于 2012-07-18T21:57:59.747 回答
0

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

于 2012-07-18T22:16:55.917 回答
-1

你可以试试

if(time() <= $compy){

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

于 2012-07-18T21:54:09.403 回答