نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: تبدیل تاریخ میلادی به شمسی

  1. #1
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180
    سپاس ها
    19
    سپاس شده 582 در 473 پست

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

    سلام

    توی PHPBB اکثر کاربران دوست دارن از تاریخ شمسی استفاده کنند ولی مدی که برای این کار موجود هست خیلی نصب سخت و حساسی داره از این رو میخوام آسونترین روش برای تبدلی تاریخ میلادی به شمسی رو براتون بزارم لطفا دقیقا بصورت زیر عمل کنید تا مشکلی براتون پیش نیاد

    براي اصلاح نمايش تاريخ شمسي به اين صورت زير عمل کنيد. در فولدر includes در فايل functions.php در خط 393 چنين چيزي مي بينيد:

    کد PHP:
    function create_date($format, $gmepoch, $tz)
    {
    global
    $board_config, $lang;
    static
    $translate;
    if ( empty(
    $translate) && $board_config['default_lang'] != 'english' )
    {
    @
    reset($lang['datetime']);
    while ( list(
    $match, $replace) = @each($lang['datetime']) )
    {
    $translate[$match] = $replace;
    }
    }
    return ( !empty(
    $translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : @gmdate($format, $gmepoch + (3600 * $tz));
    }

    با این کد پایین جایگذین

    کد PHP:

    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);
    $div = create_function('$a,$b','return (int) ($a / $b);');
    $gy = $g_y-1600;
    $gm = $g_m-1;
    $gd = $g_d-1;
    $g_day_no = 365*$gy+$div($gy+3,4)-$div($gy+99,100)+$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 = $div($j_day_no, 12053); /* 12053 = 365*33 + 32/4 */
    $j_day_no = $j_day_no % 12053;
    $jy = 979+33*$j_np+4*$div($j_day_no,1461); /* 1461 = 365*4 + 4/4 */
    $j_day_no %= 1461;
    if (
    $j_day_no >= 366) {
    $jy += $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);
    }
    function
    jalali_to_gregorian($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);
    $div = create_function('$a,$b','return (int) ($a / $b);');
    $jy = $j_y-979;
    $jm = $j_m-1;
    $jd = $j_d-1;
    $j_day_no = 365*$jy + $div($jy, 33)*8 + $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*$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*$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*$div($g_day_no, 1461); /* 1461 = 365*4 + 4/4 */

  2. کاربر روبرو از پست مفید B@RBOD سپاس کرده است .


کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •