使用PHP比较两年时总是如此

时间:2017-05-31 05:45:33

标签: php date

我有一个问题。我正在尝试使用PHP将当前年份与给定年份进行比较,但根据我的编码,它总是返回给我。我正在解释下面的代码。

$datestr="2020-2029";
$curryear=date("Y");
$yearArr=explode("-",$datestr);
$strYear=strtotime($yearArr[0]);
if($curryear < $strYear){
    $flag=true;
}else{
    $flag=false;
}
echo $flag; 

在这里,我需要在-之前的第一年应该是当年的before year/same year。请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

您不需要strtotime(),因为此函数会返回时间戳,您只需要年份字符串。使用此:

$datestr="2016-2029";
$curryear=date("Y");
$yearArr=explode("-",$datestr);
$strYear=$yearArr[0];
if($curryear < $strYear){
    $flag=true;
}else{
    $flag=false;
}
echo $flag;

答案 1 :(得分:0)

您已经拥有4位数字表示年份(2016年),但是自1970年使用strtotime()以来,您将其转换为秒数,这是一个更大的数字(var_dump($strYear);会显示int(1496254560))。您只想删除该功能,否则您要比较2017 < 1496254560

$datestr = "2016-2029";
$curryear = date("Y");
$yearArr = explode("-",$datestr);
$strYear = $yearArr[0];
if ($curryear < $strYear) {
    $flag = true;
} else {
    $flag = false;
}

Live demo

答案 2 :(得分:0)

回复:

php > var_dump("2016" < 2015);
php shell code:1:
bool(false)
php > var_dump("2016" < 2018);
php shell code:1:
bool(true)

使用strtotime,2016字符串将转换为整数。而你的年份总是低于这个数字。

PHP自动转换变量。

{{1}}

要在家中尝试此操作,请在bash中运行“php -a”。你可以动态试试php。