@@ -83,8 +83,8 @@ public function daysInMonth($year, $month)
8383 1440 => [30 , 29 , 30 , 30 , 30 , 29 , 29 , 30 , 29 , 30 , 29 , 29 ],
8484 1441 => [29 , 30 , 29 , 30 , 30 , 29 , 30 , 30 , 29 , 30 , 29 , 30 ],
8585 1442 => [29 , 29 , 30 , 29 , 30 , 29 , 30 , 30 , 29 , 30 , 30 , 29 ],
86- 1443 => [29 , 30 , 30 , 29 , 29 , 30 , 29 , 30 , 29 , 30 , 30 , 29 ]
87-
86+ 1443 => [29 , 30 , 30 , 29 , 29 , 30 , 29 , 30 , 29 , 30 , 30 , 29 ],
87+ 1444 => [ 30 , 30 , 29 , 30 , 29 , 29 , 30 , 30 , 29 , 30 , 29 , 30 ],
8888 ];
8989
9090 if ($ month < 1 || $ month > 12 ) {
@@ -109,13 +109,26 @@ public function julianDayFirstOfYear($year)
109109 1440 => 2458372.5 ,
110110 1441 => 2458727.5 ,
111111 1442 => 2459082.5 ,
112- 1443 => 2459436.5
112+ 1443 => 2459436.5 ,
113+ 1444 => 2459790.5 ,
113114 ];
114115
115116 if (isset ($ julianDays [$ year ])) {
116117 return $ julianDays [$ year ];
117118 }
118- return $ this ->dateToJulianDay ($ year , 1 , 1 , 0 , 0 , 0 );
119+
120+ $ availYears = array_keys ($ julianDays );
121+ $ minYear = min ($ availYears );
122+ $ maxYear = max ($ availYears );
123+
124+ if ($ year > $ maxYear ) {
125+ $ julianDay = $ julianDays [$ maxYear ] + (($ year - $ maxYear ) * Constants::DAYS_OF_SHIA_YEAR );
126+ }
127+ else { // $year < $minYear
128+ $ julianDay = $ julianDays [$ minYear ] - (($ minYear - $ year ) * Constants::DAYS_OF_SHIA_YEAR );
129+ }
130+
131+ return $ julianDay ;
119132 }
120133
121134 public function isLeap ($ year )
0 commit comments