2017-05-21 9 views
0

私はこの行を更新して、現在の日付(date1)をdate2 "$ date2 = ew_StdCurrentDateYear();と比較します。 dd.mm.yearにする必要がありますが、現在の年を考慮しない日と月のみを比較します。 年齢のエントリは$ compdates == 1と等しい問題です(エントリが2007年3月31日より前の日付である場合)PHPの行を小さな欠陥で更新する

実際に年を比較するようにコードを変更するにはどうすればよいですか?

// Row Updating event 
function Row_Updating($rsold, &$rsnew) { 
     $date1 = $rsnew["data"]; 
     $date2 = ew_StdCurrentDateYear(); 
     $compdates = CompareDates($date1, $date2); 
     if (($compdates == 1) && ($rsnew["suma"] == $rsnew["cota"])) { 
     $rsnew["suma_acor"] = $rsnew["cota"] * 50/100; 
     $rsnew["suma_filiala"] = $rsnew["cota"] * 50/100; 
     $rsnew["suma_cotiz"] = 0; 
     } 
     if (($compdates == 2) && ($rsnew["suma"] == $rsnew["cota"])) { 
     $rsnew["suma_acor"] = $rsnew["cota"] * 60/100; 
     $rsnew["suma_filiala"] = $rsnew["cota"] * 40/100; 
     $rsnew["suma_cotiz"] = 0; 
     } 

//31.03 every year 
function ew_StdCurrentDateYear() { 
    return date('Y/03/31'); 
} 

//compares the calendar date with 31.03 every year 
function CompareDates($date1, $date2) { 
list($year, $month, $day) = preg_split('/-/', $date1); 
$new_date1 = sprintf('%04d%02d%02d', $year, $month, $day); 
list($year, $month, $day) = preg_split('/\//', $date2); 
$new_date2 = sprintf('%04d%02d%02d', $year, $month, $day); 

if ($new_date1 <= $new_date2) { 
    return 1; 
    } else { 
    return 2; 
} 
} 

答えて

0

PHP DateTimeクラスを使用してみてください。これにより、ほとんどの日付形式を解析し、直接比較することができます。

$date1 = '2016-03-31'; 
$date2 = '2017/03/31'; 

function compareDates($date1, $date2) 
{ 
    $date1 = new DateTime($date1); 
    $date2 = new DateTime($date2); 

    return ($date1 <= $date2) ? 1 : 2; 
} 
関連する問題