Skip to content

Commit 4d4583d

Browse files
committed
Fixed: calculation of julian day first of year when not exists it year in list.
1 parent 9a63697 commit 4d4583d

1 file changed

Lines changed: 17 additions & 4 deletions

File tree

src/Calendars/ShiaCalendar.php

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)