نمایش نتایج 1 تا 2 از 2

نام تاپیک: مشکل در تبذیل تاریخ شمسی

  1. #1
    کاربر دائمی آواتار billgivz
    تاریخ عضویت
    مهر 1387
    محل زندگی
    شیراز
    پست
    275

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

    سلام دوستان من یک تابع تبدیل میلادی به شمسی دارم و یک مشکل کوچیک داره اینکه وقتی شب ساعت 12 میشه تاریخ به جلو کشیده نمیشه تریبا صبح تاریخ به جلو کشیده یعنی چند ساعت بعد .

    تقزیبا ساعت 4 بامداد تاریخ رو میکشه جلو

    در ضمن داخل local hots هم تست کردم همینجور بود و time zoon هم روی tehran هست

    من کد رو میزارم دوستان لطف کنند مشکلش رو برطرف کنند

    <?php
    // بسم الله الرحمن الرحیم
    // the function check a miladiyear is leap or not.
    /*Eample
    <?php
    require("shamsi.php");
    $test = new shamsi_date(2007,2,15);
    echo "سال = " . $test->shamsi_year ."<br>";
    echo "ماه = " . $test->shamsi_month."<br>";
    echo "روز = " . $test->shamsi_day."<br>";
    ?>
    */
    class shamsi_date
    {

    function __construct($iMiladiYear,$iMiladiMonth,$iMiladiDay )
    {
    $this->shamsi_year = 0;
    $this->shamsi_month = 0;
    $this->shamsi_day = 0;
    $this->MiladiToShamsi($iMiladiMonth,$iMiladiDay,$iMiladi Year);
    }

    function MiladiIsLeap($miladiYear)
    {
    if((($miladiYear % 100)!= 0 && ($miladiYear % 4) == 0) || (($miladiYear % 100)== 0 && ($miladiYear % 400) == 0))
    return 1;
    else
    return 0;
    }

    function MiladiToShamsi($iMiladiMonth,$iMiladiDay,$iMiladiY ear)
    {
    $shamsiDay = 0; $shamsiMonth=0; $shamsiYear=0;
    $dayCount=0;$farvardinDayDiff=0;$deyDayDiff=0 ;
    $sumDayMiladiMonth = array(0,31,59,90,120,151,181,212,243,273,304,334);
    $sumDayMiladiMonthLeap = array(0,31,60,91,121,152,182,213,244,274,305,335);
    $farvardinDayDiff=79;
    if ($this->MiladiIsLeap($iMiladiYear))
    {
    $dayCount = $sumDayMiladiMonthLeap[$iMiladiMonth-1] + $iMiladiDay;
    }
    else
    {
    $dayCount = $sumDayMiladiMonth[$iMiladiMonth-1] + $iMiladiDay;
    }

    if(($this->MiladiIsLeap($iMiladiYear - 1)))
    {
    $deyDayDiff = 11;
    }
    else
    {
    $deyDayDiff = 10;
    }

    if ($dayCount > $farvardinDayDiff)
    {
    $dayCount = $dayCount - $farvardinDayDiff;
    if ($dayCount <= 186)
    {
    switch ($dayCount%31)
    {
    case 0:
    $shamsiMonth = $dayCount / 31;
    $shamsiDay = 31;
    break;
    default:
    $shamsiMonth = ($dayCount / 31) + 1;
    $shamsiDay = ($dayCount%31);
    break;
    }
    $shamsiYear = $iMiladiYear - 621;
    }
    else
    {
    $dayCount = $dayCount - 186;
    switch ($dayCount%30)
    {
    case 0:
    $shamsiMonth = ($dayCount / 30) + 6;
    $shamsiDay = 30;
    break;
    default:
    $shamsiMonth = ($dayCount / 30) + 7;
    $shamsiDay = ($dayCount%30);
    break;
    }
    $shamsiYear = $iMiladiYear - 621;
    }
    }
    else
    {
    $dayCount = $dayCount + $deyDayDiff;

    switch ($dayCount%30)
    {
    case 0 :
    $shamsiMonth = ($dayCount / 30) + 9;
    $shamsiDay = 30;
    break;
    default:
    $shamsiMonth = ($dayCount / 30) + 10;
    $shamsiDay = ($dayCount%30);
    break;
    }
    $shamsiYear = $iMiladiYear - 622;
    }

    if ($shamsiDay > 0 && $shamsiDay < 10 )
    {
    $this->shamsi_day = "0".(int)$shamsiDay ;
    }
    else
    {
    $this->shamsi_day = (int)$shamsiDay ;
    };

    if ($shamsiMonth >0 && $shamsiMonth < 10 )
    {
    $this->shamsi_month = "0".(int)$shamsiMonth ;
    }
    else
    {
    $this->shamsi_month = (int)$shamsiMonth ;
    };

    $this->shamsi_year = (int)$shamsiYear ;
    }

    }

    ?>


  2. #2
    کاربر دائمی آواتار wallfa
    تاریخ عضویت
    بهمن 1388
    محل زندگی
    همدان
    پست
    414

    نقل قول: مشکل در تبذیل تاریخ شمسی

    من وقت نکردم تابع بررسی کنم ، اما فکر کنم این طبق تاریخ میلادی ساعت به روز میکونه . چرا از این تابع استفاده میکنی سرچ کن یه کلاس یه نفر براش نوشته!

    این توی گوگل سرچ کن gregorian to jalali php class

قوانین ایجاد تاپیک در تالار

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