From 3027c167a4ddce33cfb6c9ce6fa4629b7fa9048f Mon Sep 17 00:00:00 2001 From: Noah Miller Date: Wed, 19 Jan 2022 18:32:56 -0800 Subject: [PATCH] translate 2-digit years to 4 using rolling -95yr to +5yr window --- CRM/Utils/Date.php | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/CRM/Utils/Date.php b/CRM/Utils/Date.php index 318dfa996c..65152847d6 100644 --- a/CRM/Utils/Date.php +++ b/CRM/Utils/Date.php @@ -540,8 +540,6 @@ class CRM_Utils_Date { */ public static function convertToDefaultDate(&$params, $dateType, $dateParam) { $now = getdate(); - $cen = substr($now['year'], 0, 2); - $prevCen = $cen - 1; $value = NULL; if (!empty($params[$dateParam])) { @@ -693,15 +691,15 @@ class CRM_Utils_Date { $month = ($month < 10) ? "0" . "$month" : $month; $day = ($day < 10) ? "0" . "$day" : $day; - $year = (int ) $year; - // simple heuristic to determine what century to use - // 00 - 20 is always 2000 - 2020 - // 21 - 99 is always 1921 - 1999 - if ($year < 21) { - $year = (strlen($year) == 1) ? $cen . '0' . $year : $cen . $year; - } - elseif ($year < 100) { - $year = $prevCen . $year; + $year = (int) $year; + if ($year < 100) { + $year = substr($now['year'], 0, 2) * 100 + $year; + if ($year > ($now['year'] + 5)) { + $year = $year - 100; + } + elseif ($year <= ($now['year'] - 95)) { + $year = $year + 100; + } } if ($params[$dateParam]) { -- 2.25.1