if($_POST['syear']){
$compy = strtotime($_POST['syear']);
if(date("Y") <= date("Y", $compy)){
//success
$startdate = $_POST['syear'];
}
else{
$error = 6;
}
}
我创建了上面的代码并且不知道我哪里出错了。我从一个带有数字的表单中发布一个字符串,并希望将其与当前年份进行比较。如果该数字等于或小于当前年份,那么它应该是成功的。即使数量大于当前年份,它也总是成功的。我是否需要将一些字符串转换为整数或者我完全错过了一些东西。
答案 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时间戳并以这种方式进行比较。