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

۶ سال پیش(به روز شده در ۵ سال پیش) پی اچ پی(PHP)(توابع) ۰

تابع تبدیل تاریخ میلادی به شمسی. دو تابع اولیه مربوط مشخص کردن کبیسه بودن سالهای شمسی و میلادی است.

function gLeapYear( $year )
{
   if ( ( $year % 4 == 0 ) and ( ( $year % 100 != 0 ) or ( $year % 400 == 0 ) ) )
      return true;
   else
      return false;
}

function sLeapYear( $year )
{
   $ary = array( 1, 5, 9, 13, 17, 22, 26, 30 );
   $result = false;
   $b = $year % 33;
   if ( in_array( $b, $ary ) )
      $result = true;
   return $result;
}

function shamsiDate( $gyear, $gmonth, $gday )
{
   $_gl = array( 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 );
   $_g = array( 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 );
   $_smNames = array( 1 => 'فروردین', 2 => 'اردیبهشت', 3 => 'خرداد', 4 => 'تیر', 5 => 'مرداد', 6 => 'شهریور', 7 => 'مهر', 8 => 'آبان', 9 => 'آذر', 10 => 'دی', 11 => 'بهمن', 12 => 'اسفند' );
   $result = array();
   $deydiffjan = 10;
   if ( gLeapYear( $gyear - 1 ) )
      $deydiffjan = 11;
   if ( gLeapYear( $gyear ) )
      $gd = $_gl[$gmonth - 1] + $gday;
   else
      $gd = $_g[$gmonth - 1] + $gday;
   if ( $gd > 79 ) {
      $sy = $gyear - 621;
      $gd = $gd - 79;
      if ( $gd <= 186 ) {
         $gmod = $gd % 31;
         switch ( $gmod ) {
            case 0:
               $sd = 31;
               $sm = ( int )( $gd / 31 );
               break;
            default:
               $sd = $gmod;
               $sm = ( int )( $gd / 31 ) + 1;
         }
      }
      else {
         $gd = $gd - 186;
         $gmod = $gd % 30;
         switch ( $gmod ) {
            case 0:
               $sd = 30;
               $sm = ( int )( $gd / 30 ) + 6;
               break;
            default:
               $sd = $gmod;
               $sm = ( int )( $gd / 30 ) + 7;
         }
      }
   }
   else {
      $sy = $gyear - 622;
      $gd = $gd + $deydiffjan;
      $gmod = $gd % 30;
      switch ( $gmod ) {
         case 0:
            $sd = 30;
            $sm = ( int )( $gd / 30 ) + 9;
            break;
         default:
            $sd = $gmod;
            $sm = ( int )( $gd / 30 ) + 10;
      }
   }

   return "$sd $_smNames[$sm] $sy";
}

echo shamsiDate( 2013, 12, 14 ); //out =  23 آذر 1392

برچسبها

هیچ برچسبی موجود نیست.

صفحات پیشنهادی

تابع تشخیص پسوند از نام فایل...

تابع زیر پسوند فایل را بر می گرداند. function ext($file_name) { return substr($file_name, strrpos($file_name, '.') + 1); }...

چک کردن صحت رشته ی کاراکتر-عددی...

تابع ()ctype_alnum رشته ورودی را بررسی میکند که آیا فقط از کاراکتر و عدد است یا نه(Alpha Numeric). در صورت درستی مقدار True و در غیر اینصورت مقدار False را بر می گرداند......

فراخوانی فایلهای پیکربندی ini با تابع ()parse_ini_file...

تابع ()parse_ini_file جهت پردازش و فراخوانی متغیرهای درونی فایلهای پیکربندی ini بکار می رود. در وب سایتهای تخصصی همواره قرار دادن متغیرهای سراسری در فایلهای php جالب نیست و معقول خواهد بود تا متغیرهای...

گرفتن محتوای وب سایت با کمک curl در php...

در پستهای قبل چنین مطلبی ذکر شده بود اما اینبار از قدرت سری توابع curl برای این منظور استفاده نمودیم. مزیت استفاده از این روش معرفی User agent و سایر موارد اضافی است که بصورت معمول نمیتوان با استفاده ...

نظر

نظری ثبت نشده است.
captcha image reload