PDA

View Full Version : مشکل در تبدیل تاریخ میلادی به شمسی



white tower
دوشنبه 25 شهریور 1392, 19:36 عصر
سلام
من کد زیر رو گیر آوردم برای تبدیل تاریخ.

function gregorian_to_jalali ($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 + $this -> div($gy + 3, 4) - $this -> div($gy + 99, 100) + $this -> 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)))
/* leap and after Feb */
$g_day_no++;
$g_day_no += $gd;
$j_day_no = $g_day_no - 79;
$j_np = $this -> div($j_day_no, 12053); /* 12053 = 365*33 + 32/4 */
$j_day_no = $j_day_no % 12053;
$jy = 979 + 33 * $j_np + 4 * $this -> div($j_day_no, 1461); /* 1461 = 365*4 + 4/4 */
$j_day_no %= 1461;
if ($j_day_no >= 366) {
$jy += $this -> 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);
}
تبدیل میلادی به شمسی هم لازم دارم.منتها این ارور رو میده.

Fatal error: Using $this when not in object context in D:\wamp\www\zmdv\home\date_changer.php on line 8

reza10wert
دوشنبه 25 شهریور 1392, 19:42 عصر
سلام
از کتابخانه jdf استفاده کن
کلی توابع کاربردی برای برنامه نویسان داره