سلام ، آیا این بازدید اول شماست ؟ یا
نمایش نتایج: از شماره 1 تا 2 , از مجموع 2

موضوع: تاريخ فارسي

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    تاریخ عضویت
    Dec 2006
    نوشته ها
    30
    تشکر
    0
    تشکر شده 0 بار در 0 ارسال

    تاريخ فارسي

    من چگونه مي تونم تاريخ مامبو را از ميلادي به جلالي تغيير بدم به طوري كه تاريخ كل سيستم جلالي بشه ؟
    اگه امكان داره هم كد تاريخ جلالي و هم روش انجام كار را توضيح بديد .

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  2. # ADS
    تبلیغات در جوملا فارسی
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    Admin
    تاریخ عضویت
    Dec 2005
    محل سکونت
    U.A.E
    نوشته ها
    13,222
    تشکر
    318
    تشکر شده 1,338 بار در 652 ارسال

    پاسخ : تاريخ فارسي

    استفاده از تابع تبدیل تاریخ شمسی به میلادی و بالعکس در PHP




    بوسیله یک Copy و Paste متن این توابع را درون یک فایل جدید بنام به عنوان مثال
    jalali.php ذخیره کنید .

    برای اینکه بتوانید از این توابع در برنامه خود استفاده کنید کافیست در ابتدای
    برنامه خود دستور زیر را وارد کنید :



    با این کار دو تابع با نامهای gregorian_to_jalali و jalali_to_gregorian در اختیار
    شما قرار می گیرند که به ترتیب برای تبدیل تاریخ میلادی به شمسی و شمسی به میلادی
    مورد استفاده قرار می گیرند .


    برای اینکه بتوانم نحوه استفاده از این دو تابع را شرح دهم به ذکر مثالهایی در
    این مورد می پردازم .


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

    برای این کار باید از تابع gregorian_to_jalali استفاده کنید . این تابع 3 متغیر
    را از ورودی دریافت می کند که به ترتیب سال، ماه و روز می باشد که همگی از نوع
    عددی می باشند .

    برای مثال اگر بخواهیم تاریخ 2002-11-25 را که درون یک متغیر داریم به شمسی تبدیل
    کنیم و سپس آنرا درون یک متغیر قرار دهیم ابتدا باید عناصر تاریخ میلادی رو جدا
    کنیم . برای این کار می توانیم در دستور زیر استفاده کنیم :

    کد:
    list( $gyear, $gmonth, $gday ) = preg_split ( '/-/', $gdate );
    ?>
    در اینجا از دستور preg_spilit برای جدا کردن عناصر تاریخ $gdate توسط جداکننده
    – استفاده کرده ایم . همانطور که می بینید syntax این دستور به این صورت است که
    2 متغیر به عنوان ورودی دریافت می کند . اولی به عنوان delimiter می باشد که چون
    می توان به صورت regex نیز آنرا وارد کرد باید بین دو slash (/) قرار گیرد و متغیر
    دوم هم که همان متغییری است که تاریخ میلادی ما در آن قرار دارد .


    چون خروجی این دستور یک آرایه است از دستور list استفاده کرده ایم تا عناصر آرایه
    را هر کدام در یک متغیر قرار دهیم . هم اکنون روز، ماه و سال میلادی را هر کدام
    در یک متغیر داریم . حال می توانیم از تابع gregorian_to_jalali استفاده کنیم :

    کد:
    list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($gyear, $gmonth, $gday);
    ?>
    در اینجا مشخص است که 3 متغیر سال، ماه و روز میلادی را به عنوان متغیر های ورودی
    تابع grogorian_to_jalali وارد کرده ایم و چون خروجی این تابع از نوع آرایه است
    توسط دستور list هر کدام از عناصر این آرایه را در یک متغیر قرار می دهیم . این
    متغیر های حاوی اطلاعات سال،‌ ماه و روز همان تاریخ به شمسی می باشند . برای اینکه
    آنها را به صورت قابل نمایش در یک متغیر قرار دهیم می توانیم این خط را به برنامه
    اضافه کنیم :

    کد:
    $jdate = $jyear."/".$jmonth."/".$jday;
    ?>
    در صوتیکه مقدار $jdate را نمایش دهید همان تاریخ از نوع شمسی خواهد بود که چیزی
    شبیه به مقدار زیر است :


    4/9/1381

    حال در صورتیکه بخواهید تاریخ همین لحظه را به صورت شمسی بدست آورید می توانید
    از برنامه زیر استفاده کنید :

    کد:
    list($gyear, $gmonth, $gday ) = preg_split ('/-/', date("Y-m-d"));
    list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($gyear, $gmonth, $gday);
    
    $jdate = $jyear."/".$jmonth."/".$jday;
    ?>
    همانطور که ملاحظه کردید از دستور date با آرگومان داده شده تاریخ فعلی سیستم
    استخراج می شود و در همان روال توضیح داده شده تبدیل به شمسی شده و در متغیر $jdate
    قرار می گیرد .


    برای اینکه کارتان کمی ساده تر شود می توانید تابعی به شکل زیر تعریف کنید :

    کد:
    function get_jalali_date( $gdate='now' )
    {
    
    if ( $gdate == 'now' )
    {
    list($gyear, $gmonth, $gday ) = preg_split ('/-/', date("Y-m-d"));
    }
    else
    {
    list( $gyear, $gmonth, $gday ) = preg_split ( '/-/', $gdate );
    }
    list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($gyear, $gmonth, $gday);
    return $jyear."/".$jmonth."/".$jday;
    
    }
    ?>

    تابعی با نام get_jalali_date تعریف کردیم که یک متغیر به عنوان ورودی دریافت
    می کند که این همان تاریخ به میلادی است . در صوتیکه هنگام صدا کردن این تابع تاریخ
    میلادی را به عنوان ورودی برای این تابع وارد کرده باشید،‌ تابع همان تاریخ را
    به شمسی تبدیل کرده و در خروجی بر می گرداند،‌ ولی اگر هیچ متغیری به عنوان ورودی
    به این تابع ندهید،‌ تاریخ همان لحظه را به شمسی برای شما در خروجی بر می گرداند
    .

    مثلا برای تبدیل همان تاریخ 2002-11-25 به شمسی و قرار دادن آن در یک متغیر می
    توانیم با استفاده از تابع بالا اینگونه عمل کنیم :





    و یا برای بدست آوردن تاریخ همین لحظه و قرار دادن آن در یک متغیر اینگونه عمل
    می کنیم :





    همانطور که می بینید کار بسیار ساده تر شد.



    2- تبدیل تاریخ شمسی به میلادی :

    با توضیحاتی مشابه می توانید از تابع jalali_to_gregorian استفاده کنید . مانند
    تابع قبل این تابع هم سه متغیر به عنوان ورودی دریافت می کند که عبارتند از سال،
    ماه و روز که همگی به شمسی هستند . سپس در جواب آرایه ای شامل سه قسمت که سال،‌
    ماه و روز میلادی همان تاریخ هستند را بر می گرداند .



    برای نمونه اگر بخواهیم تاریخ 4/9/1381 را به میلادی تبدیل کنیم کاری مشابه برنامه
    زیر انجام می دهیم :

    کد:
    $jdate="1381/9/4";
    list( $jyear, $jmonth, $jday ) = preg_split ( '///', $jdate );
    list( $gyear, $gmonth, $gday ) = jalali_to_gregorian($jyear, $jmonth, $jday);
    $gdate = $gyear."-".$gmonth."-".$gday;
    ?>
    تنها تفاومت موجود با تابع بالا استفاده از / برای جداسازی اجزاء تاریخ شمسی می
    باشد . همانطور که گفتیم تابع preg_split آرگومان اول خود که همان delimiter (‌
    جدا کننده )‌ می باشد را به صورت regex می گیرد که باید بین دو علامت / باشد ،‌
    در اینجا باید قبل / که نشان دهنده کاراکتر delimiter ما می باشد یک \ (‌back slash
    )‌ قرار می دهیم که جداکننده مشخص باشد .



    توضیح خاص دیگری هم ندارد و همانند تابع تبدیل میلادی به شمسی اینجا هم می توانیم
    تابعی با نام get_gregorian_date بسازیم که کار را راحتتر کند . ایجاد این تابع را به خواننده واگذار می کنم .

    منبع: [مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید]


    [hr]

    دوست عزیز

    در انجمن مامبولرن در مورد چگونگی برنامه نویسی یا ... بحث نمیشه . اینگونه سوالها رو بهتره در انجمن های برنامه نویسی بپرسید .

    یا علی

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

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

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