]> git.mjollnir.org Git - s9y.git/commitdiff
j2g added (Jalali to Gregorian)
authoromidmottaghi <omidmottaghi>
Mon, 4 Jul 2005 08:53:36 +0000 (08:53 +0000)
committeromidmottaghi <omidmottaghi>
Mon, 4 Jul 2005 08:53:36 +0000 (08:53 +0000)
include/functions_calendars.inc.php

index 09603426258c8e9835cb67864f51f55498629c9a..96b012d9e49d8d54aa4279093fb1988f99a1882f 100644 (file)
@@ -45,6 +45,49 @@ function g2j($g_y, $g_m, $g_d){
     return array($jy, $jm, $jd);
 }
 
+// Gregorian to Jalali Convertor, by farsiweb.info
+function j2g($j_y, $j_m, $j_d){
+    $g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
+    $j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
+    $jy = $j_y-979;
+    $jm = $j_m-1;
+    $jd = $j_d-1;
+    $j_day_no = 365*$jy + floor($jy/33)*8 + floor(($jy%33+3)/4);
+    for ($i=0; $i < $jm; ++$i){
+        $j_day_no += $j_days_in_month[$i];
+    }
+    $j_day_no += $jd;
+    $g_day_no = $j_day_no+79;
+    $gy = 1600 + 400*floor($g_day_no/146097);
+    $g_day_no = $g_day_no % 146097;
+    $leap = true;
+    if ($g_day_no >= 36525){
+        $g_day_no--;
+        $gy += 100*floor($g_day_no/36524);
+        $g_day_no = $g_day_no % 36524;
+        if ($g_day_no >= 365){
+            $g_day_no++;
+        }else{
+            $leap = false;
+        }
+    }
+    $gy += 4*floor($g_day_no/1461);
+    $g_day_no %= 1461;
+    if ($g_day_no >= 366){
+        $leap = false;
+        $g_day_no--;
+        $gy += floor($g_day_no/365);
+        $g_day_no = $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);
+}
+    
 // Jalali UTF Calendar code by Omid Mottaghi
 function calendar_jalali_utf($format, $timestamp) {