jDateTime::toGregorian PHP Méthode

toGregorian() public static méthode

Jalali to Gregorian Conversion Copyright (C) 2000 Roozbeh Pournader and Mohammad Toossi
public static toGregorian ( $j_y, $j_m, $j_d )
    public static function toGregorian($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 + self::div($jy, 33) * 8 + self::div($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 * self::div($g_day_no, 146097);
        $g_day_no = $g_day_no % 146097;
        $leap = true;
        if ($g_day_no >= 36525) {
            $g_day_no--;
            $gy += 100 * self::div($g_day_no, 36524);
            $g_day_no = $g_day_no % 36524;
            if ($g_day_no >= 365) {
                $g_day_no++;
            } else {
                $leap = false;
            }
        }
        $gy += 4 * self::div($g_day_no, 1461);
        $g_day_no %= 1461;
        if ($g_day_no >= 366) {
            $leap = false;
            $g_day_no--;
            $gy += self::div($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);
    }

Usage Example

Exemple #1
1
 /**
  * @param $format
  * @param $str
  * @return \DateTime
  */
 public static function dateTimeFromFormat($format, $str)
 {
     $jd = new jDate();
     $pd = $jd->parseFromFormat($format, $str);
     $gd = jDateTime::toGregorian($pd['year'], $pd['month'], $pd['day']);
     $date = new \DateTime();
     $date->setDate($gd[0], $gd[1], $gd[2]);
     $date->setTime($pd['hour'], $pd['minute'], $pd['second']);
     return $date;
 }
All Usage Examples Of jDateTime::toGregorian