jDateTime::toJalali PHP Method

toJalali() public static method

Gregorian to Jalali Conversion Copyright (C) 2000 Roozbeh Pournader and Mohammad Toossi
public static toJalali ( $g_y, $g_m, $g_d )
    public static function toJalali($g_y, $g_m, $g_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);
        $gy = $g_y - 1600;
        $gm = $g_m - 1;
        $gd = $g_d - 1;
        $g_day_no = 365 * $gy + self::div($gy + 3, 4) - self::div($gy + 99, 100) + self::div($gy + 399, 400);
        for ($i = 0; $i < $gm; ++$i) {
            $g_day_no += $g_days_in_month[$i];
        }
        if ($gm > 1 && ($gy % 4 == 0 && $gy % 100 != 0 || $gy % 400 == 0)) {
            $g_day_no++;
        }
        $g_day_no += $gd;
        $j_day_no = $g_day_no - 79;
        $j_np = self::div($j_day_no, 12053);
        $j_day_no = $j_day_no % 12053;
        $jy = 979 + 33 * $j_np + 4 * self::div($j_day_no, 1461);
        $j_day_no %= 1461;
        if ($j_day_no >= 366) {
            $jy += self::div($j_day_no - 1, 365);
            $j_day_no = ($j_day_no - 1) % 365;
        }
        for ($i = 0; $i < 11 && $j_day_no >= $j_days_in_month[$i]; ++$i) {
            $j_day_no -= $j_days_in_month[$i];
        }
        $jm = $i + 1;
        $jd = $j_day_no + 1;
        return array($jy, $jm, $jd);
    }

Usage Example

Beispiel #1
0
 public static function toJalali()
 {
     $date = new jDateTime(true, true, 'Asia/Tehran');
     $d = date('Y-m-d', strtotime('-7 day'));
     $exp = explode('-', $d);
     $result = $date->toJalali($exp[0], $exp[1], $exp[2]);
     if ($result[1] <= 9) {
         $_d = '0' . $result[1];
     } else {
         $_d = $result[1];
     }
     if ($result[2] <= 9) {
         $_m = '0' . $result[2];
     } else {
         $_m = $result[2];
     }
     return $result[0] . '-' . $_d . '-' . $_m;
 }
All Usage Examples Of jDateTime::toJalali