کمک در تبدیل تاریخ

PERSIANLITY

New Member
سلام !
چطوری میشه این فانکشن‌هارو برای تبدیل به تاریخ شمسی ادیت کرد ؟؟

PHP:
function CCDaysInMonth($year, $month) {
  switch ($month) {
    case 4:
    case 6:
    case 9:
    case 11:
      return 30;
    case 2:
       if ($year % 4)
         return 28;
       elseif ($year % 100)
         return 29;
       elseif ($year % 400)
         return 28;
       else return 29;
    default:
      return 31;
  }

}
function CCDayOfWeek($date) {
  //return 1 - Sun, 2 - Mon, 3 - Tue ...
  $year = $date[ccsYear];
  $month = $date[ccsMonth];
  $day = $date[ccsDay];
  $century = $year - ( $year % 100 );
  $base = array( 3, 2, 0, 5 );
  $base = $base[(($century - 1500) / 100 + 16) % 4];
  $twelves = intval(($year - $century )/12);
  $rem = ($year - $century) % 12;
  $fours = intval($rem / 4);
  $doomsday = $base + ($twelves + $rem + $fours) % 7;
  $doomsday = $doomsday % 7;

  $base = array( 0, 0, 7, 4, 9, 6, 11, 8, 5, 10, 7, 12 );
  if (CCDaysInMonth($year, 2) == 29) {
    $base[0] = 32;
    $base[1] = 29;
  } else {
    $base[0] = 31;
    $base[1] = 28;
  }
  $on = $day - $base[$month - 1];
  $on = $on % 7;
  return ($doomsday + $on + 7) % 7 + 1;
}
function CCDayOfYear($date) {
  $days = 0;
  for ($month = 1; $month < $date[ccsMonth]; $month++)
    $days += CCDaysInMonth($date[ccsYear], $month);
  return $days + $date[ccsDay];
}
 

k2-4u

Well-Known Member
شما . در بالای بخش تاپیک . "ابزار های کاربری php"
رو باز کنید . در اونجا یک سمپل هست . و در انجمن جستجو کنید .
بارها در مورد تبدیل تاریخ صحبت شده

توابع جلای
و jdate
 

meysam-fathi

Active Member
PHP:
    // A tiny function to get the division of two numbers
        function div($a,$b){
            return (int) ($a / $b);
        }
    // --------------------------------------------------

    // The function to get the format and timestamp and returns the Jalali date
        function jalali_date($format = "j/n/Y",$timestamp = ''){
            // Set the time stamp to now if it is not provided
                if($timestamp == '')
                    $timestamp = time();
            // -----------------------------------------------
            
            $g_y = date("Y",$timestamp);
            $g_m = date("m",$timestamp);
            $g_d = date("d",$timestamp);
            
            $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 + 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)))
                $g_day_no++;

            $g_day_no += $gd;
            $j_day_no = $g_day_no-79;
            $j_np = div($j_day_no, 12053);
            $j_day_no = $j_day_no % 12053;
            $jy = 979+33*$j_np+4 * div($j_day_no,1461);
            $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;

            $jd_2digit = ($jd > 9)? $jd:'0'.$jd;
            $jm_2digit = ($jm > 9)? $jm:'0'.$jm;
            $jy_2digit = substr($jy,2);
            
            $j_month_names = array('فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند');
            $j_day_names = array('یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه');
            
            // Replace the date parameters within the format provided
                $format_params = array('d','m','y','Y','l','j','F','n');
                $param_replaces = array($jd_2digit,$jm_2digit,$jy_2digit,$jy,$j_day_names[date('w',$timestamp)],$jd,$j_month_names[$jm-1],$jm);
                $date = str_replace($format_params,$param_replaces,$format);
            // ------------------------------------------------------
            
            return $date;
        }
    // -----------------------------------
        
    // Converts a Jalali date to Gregorian
        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);

            $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);
            $g_day_no = $g_day_no % 146097; 

            $leap = true; 
            if ($g_day_no >= 36525){
                $g_day_no--; 
                $gy += 100*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*div($g_day_no, 1461);
            $g_day_no %= 1461;

            if ($g_day_no >= 366){
                $leap = false;
                $g_day_no--;
                $gy += 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);
        }
    // ------------------------------------------------------------------------
 

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

بالا