+ $gy += 4 * div($g_day_no, 1461); /* 1461 = 365*4 + 4/4 */
+ $g_day_no %= 1461;
+
+ if ($g_day_no >= 366)
+ {
+ $leap = false;
+
+ $g_day_no--;
+ $gy += div($g_day_no, 365);
+ $g_day_no %= 365;
+ }
+
+ for ($i = 0; $g_day_no >= $g_days_in_month[$i] + ($i == 1 && $leap); $i++)
+ $g_day_no -= $g_days_in_month[$i] + ($i == 1 && $leap);
+ $gm = $i + 1;
+ $gd = $g_day_no + 1;
+
+ return array($gy, $gm, $gd);
+}
+/* Based on Hidri Date Script
+ Released under GNU General Public License */
+function gregorian_to_islamic($g_y, $g_m, $g_d)
+{
+ $y = $g_y;
+ $m = $g_m;
+ $d = $g_d;
+ if (($y > 1582) || (($y == 1582) && ($m > 10)) || (($y == 1582) &&
+ ($m == 10) && ($d > 14)))
+ {
+ $jd = (int)((1461 * ($y + 4800 + (int)(($m - 14) / 12)))/ 4) +
+ (int)((367 * ($m - 2 - 12 * ((int)(($m - 14) / 12)))) / 12) -
+ (int)((3 * ((int)(($y + 4900 + (int)(($m - 14) / 12)) / 100))) / 4) + $d - 32075;
+ }
+ else
+ {
+ $jd = 367 * $y - (int)((7 * ($y + 5001 + (int)(($m - 9) / 7))) / 4) +
+ (int)((275 * $m) / 9) + $d + 1729777;
+ }
+ $l = $jd - 1948440 + 10632;
+ $n = (int)(($l - 1) / 10631);
+ $l = $l - 10631 * $n + 354;
+ $j = ((int)((10985 - $l) / 5316)) * ((int)((50 * $l) / 17719)) +
+ ((int)($l / 5670)) * ((int)((43 * $l) / 15238));
+ $l = $l - ((int)((30 - $j) / 15)) * ((int)((17719 * $j) / 50)) -
+ ((int)($j / 16)) * ((int)((15238 * $j) / 43)) + 29;
+ $m = (int)((24 * $l) / 709);
+ $d = $l - (int)((709 * $m) / 24);
+ $y = 30 * $n + $j - 30;
+ return array($y, $m, $d);
+}