我有这行更新代码,用于将当前日期(date1)与date2" $ date2 = ew_StdCurrentDateYear();"进行比较。应该是dd.mm.year,但它只比较日期和月份,那些没有考虑当前年份。 问题是一年前的条目等于$ compdates == 1(如果条目的日期是在2017年3月31日之前)
如何更改代码以实际比较年份呢?
// 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 :(得分: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;
}