مشکل در تبدیل تاریخ شمسی به میلادی

atmahoo

New Member
سلام ..
من یک هفته دارم دنبال یک کد واسه تبدیل یک تاریخ شمسی به میلادی و ریختنش توی یک متغیر می گردم، هیچ جوابی پیدا نکردم، همش ارور داره، با تابع pdate هم کار کردم ، جواب نمی گیرم، با jdate هم کار کردم جواب نگرفتم، می شه کمکم کنید، خیلی عجله دارم....
با Jdate که کار می کنم از split ارور می گیره
با pdate هم که اصلانمی تونم کار کنم..
 

iran-TEC

Member
تابع زیر حتما کار می کنه خروجی رو هم می تونی تو خط آخر تنظیم کنی ورودی رو هم بر اساس اسلش از هم جدا می کنه البته می تونی خودت سال و ماه و روز رو بصورت جداگانه از ورودی بهش بدی

PHP:
/*------------------------------------------------------------------------------------------*/
    public function jalali_to_gregorian($input) {//تبدیل شمسی به میلادی
        
        $date_array = explode("/",$input);
        
        //print_r($date_array);
        
        $j_y = $date_array[0];
        $j_m = $date_array[1];
        $j_d = $date_array[2];
        
        $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 + $this->div($jy, 33)*8 + $this->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*$this->div($g_day_no, 146097); 
        /* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */    
        $g_day_no = $g_day_no % 146097;
        $leap = true;
        if ($g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */    
        { 
               $g_day_no--; 
               $gy += 100*$this->div($g_day_no,  36524); /* 36524 = 365*100 + 100/4 - 100/100 */ 
               $g_day_no = $g_day_no % 36524;
               if ($g_day_no >= 365)   
                  $g_day_no++; 
               else    
                  $leap = false;
        }    
        $gy += 4*$this->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 += $this->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 $gy.'-'.$gm.'-'.$gd;
        //return array($gy, $gm, $gd); 
    }
    /*------------------------------------------------------------------------------------------*/
 

atmahoo

New Member
ممنون که کمکم کردید ، می شه لطفا یک مثال بزنید که چه جوری بهش تاریخ رو بدم . مثلا سال و ماه و روز رو بصورت جداگانه بهش بدم و چه جوری تو خروجی نمایش بدم؟؟؟؟
 

atmahoo

New Member
حیلی ممنونم بابته راهنماییتون با کمک گرفتن از کدتون تونستم مشکلم رو بطرف کنم
باز ممنونم بابت وقتیکه گذاشتید
 

جدیدترین ارسال ها

بالا