nfTlWNl rn Ѻq$³*%yNk9S8jnM/=ƙ`_9Ogn&aIYuim ^UA`=Q =-f0ڇ} ké]D4F0_x'T@ 0YPwb`;(^2bRN^`݅mN͗i 7QrR׿tw~OqtXlm3vHɱ#B'7mV6!;[ H:HgӉpУ:#{GH!,ʁlHhTMx!H,B6y ?RZHu$Ķ'BǢΗ}vN|ff|lXw%trXklEIF q/B/M#pZ^4$ObM4a'Q#wױZݟ&R,?:Rm+s]c%Gr$cl&N dɜ=3>"Q{0࢕Teݧ&bE.~/:"XG'?tMhgk+msSi XTxtRyc>?37_=~uǂlyi%_J=A$rs^V$ e &%Ҋ5q;3&3§ހFlNl<=q;'%g+L3G'8]#p %7]Gi(F* ,QFjB: +#Ao] ;*Ɠ`cRn}ttmʠܜ^>ΟaP )X\D2f@|$.ST|M@4m˥ݩ: )(\w}x!GdkInJQBhr. \Y B|u<8m1*WY4IzЗu&e ĢQ$3eT9ə ?GnCD_@>P(Nk;շ0kb#i98ݝ1/䴳8.:UT4YL;H]o:"-rmPjAIV& ĢQ$3D5=jٵ)I.Gg]4'! f3p aqU#ָ X$o(U}E ĢQ$3{w -|.갓5*>0{Q;Йd%SkSʄ,qD@.yBLR+p{ ĢQ$3L7y$32̪?HhOh>4/8PT +͈TCߠv8O&3 I]C63 ĢQ$3dYXqT51 q~vZrpƼBj#^xU4{r= ָ X$o(U}E ĢQ$3{w -|.갓5F69/C;v|}1 SlᖴetpFuq}O)ى_lH@W ĢQ$3f=iN\FWCh[Pݢizbw%ig wF ukz@s ֶrPjAIV& ĢQ$3;+ lyj,]1ۄ9XS =hp7ej s2EHm  Lg111cAuk4zA ĢQ$3VrhE ۉڹ{p@'{M܅^,ʦMpцo<: F[p-:)-I,Skn`,7&49bk!\`t@ vS r"і qn b@9 ĢQ$3[tO@˜1%JP8 ĢQ$3H:naGONEhAS4 1qڦ4jP0ҒƎQ` 5BZPq;q1cAuk4zA ĢQ$3+$} rIwb]@.6]ٸ,RCpEYW&ϓ/5^Us~*,Ob WY˧ ĢQ$3!{Htf΀ã@v1@GId8paֈdma*=NH;/r bW9ٹ8a3 ĢQ$3 ĢQ$3BBdv,ftVJQi2#&` ĢQ$3??nB7յ} Ơn*,p|gh1t Oݮue‚rȓRPg)eK6}5 ĢQ$3 ĢQ$3t%ZDh{GFyFS|͊KIwHS"1= ;]"C+%YnTA ĢQ$3RD9^KWHjP\ 8-2:(R\%ׯI>StmC]r ĢQ$3}/N8WTMD'netqqZDQq*7&ʈ hh-<:׍)Vxxg9=SXgetMessage(); } // Execute function $excelDateValue = SharedDateHelper::formattedPHPToExcel(/** @scrutinizer ignore-type */ $year, $month, $day); return Helpers::returnIn3FormatsFloat($excelDateValue); } /** * Convert year from multiple formats to int. * * @param mixed $year */ private static function getYear($year, int $baseYear): int { $year = ($year !== null) ? StringHelper::testStringAsNumeric((string) $year) : 0; if (!is_numeric($year)) { throw new Exception(ExcelError::VALUE()); } $year = (int) $year; if ($year < ($baseYear - 1900)) { throw new Exception(ExcelError::NAN()); } if ((($baseYear - 1900) !== 0) && ($year < $baseYear) && ($year >= 1900)) { throw new Exception(ExcelError::NAN()); } if (($year < $baseYear) && ($year >= ($baseYear - 1900))) { $year += 1900; } return (int) $year; } /** * Convert month from multiple formats to int. * * @param mixed $month */ private static function getMonth($month): int { if (($month !== null) && (!is_numeric($month))) { $month = SharedDateHelper::monthStringToNumber($month); } $month = ($month !== null) ? StringHelper::testStringAsNumeric((string) $month) : 0; if (!is_numeric($month)) { throw new Exception(ExcelError::VALUE()); } return (int) $month; } /** * Convert day from multiple formats to int. * * @param mixed $day */ private static function getDay($day): int { if (($day !== null) && (!is_numeric($day))) { $day = SharedDateHelper::dayStringToNumber($day); } $day = ($day !== null) ? StringHelper::testStringAsNumeric((string) $day) : 0; if (!is_numeric($day)) { throw new Exception(ExcelError::VALUE()); } return (int) $day; } private static function adjustYearMonth(int &$year, int &$month, int $baseYear): void { if ($month < 1) { // Handle year/month adjustment if month < 1 --$month; $year += ceil($month / 12) - 1; $month = 13 - abs($month % 12); } elseif ($month > 12) { // Handle year/month adjustment if month > 12 $year += floor($month / 12); $month = ($month % 12); } // Re-validate the year parameter after adjustments if (($year < $baseYear) || ($year >= 10000)) { throw new Exception(ExcelError::NAN()); } } }