کلاس تاریخ جلالی برای php

چهارشنبه، ۱۴ اردیبهشت ۱۳۹۰

سالها بود برای تبدیل تاریخ میلادی به جلالی در پروژه‌ها از تابع تاریخ شمسی که توسط دوست خوبم میلاد راستیان نوشته شده بود استفاده می‌کردم و این تابع با وجود قدیمی بودنش به خوبی از پس همه کارها بر می‌آمد. تا شب پیش که درحال کار کردن روی سیستمی بودم که نیاز به محاسبی زمانی برای سالهای بسیار دور داشت (مثلا ۱۰۰ سال آینده). با کمی تست متوجه شدم که تابع date که تابع پیشفرض پی‌اچ‌پی برای تاریخ و زمان است، حداکثر تا سال ۲۰۳۸ میلادی قادر به محاسبه است. به همین دلیل تابع تاریخ شمسی قبلی که از آن استفاده می‌کردم، بخاطر اینکه بر اساس تابع date نوشته شده بود، قادر به محاسبه سال‌های بیشتر از ۱۴۱۵ شمسی نبود. بعد از اینکه مطمئن شدم این تابع قابل تصحیح نیست، تصمیم گرفتم بر اساس امکان جدیدی که در PHP5 معرفی شده بود به نام DateTime، یک کلاس تاریخ جلالی بنویسم که امکاناتی که برای پروژه خودم مد نظر بود را داشته باشد. گفتنی است که کلاس DateTime در پی‌اچ‌پی قادر است تا سال ۹۹۹۹ میلادی را محاسبه کند.

امکانات کلاس تاریخ جلالی (نسخه ۱.۵)

  • قالب بندی زمان بر اساس تمام پارامتر های موجود در تابع date پی‌اچ‌پی
  • امکان فعال/غیرفعال کردن تبدیل تاریخ به جلالی
  • امکان فعال/غیرفعال کردن تبدیل اعداد به فارسی
  • امکان استفاده از مناطق زمانی تعریف شده در پی‌اچ‌پی، برای مثال: Asia/Tehran
  • امکان ساخت زمان از نوع Unix Timestamp یا Epoch Time
  • نوشته شده به صورت شی‌گرا.

نحوه استفاده از کلاس تاریخ جلالی

برای استفاده از کلاس تاریخ جلالی (شمسی) ابتدا آن را از این آدرس بارگذاری کنید، در داخل فایل فشرده شما، یک فایل به نام jdatetime.class.php وجود دارد. آن‌را در ساختار پوشه‌ای پروژه خود قرار داده و از طریق دستور require_one فراخوانی کنید:

require_once dirname(__FILE__) . '/jdatetime.class.php';

برای شروع استفاده از این کلاس، باید یک شی از کلاس jDateTime بسازید. برای اینکار در جایی از برنامه خود خطوط زیر را فراخوانی کنید:

$date = new jDateTime(); //Creates a new instance

با این‌کار شما به کلاس تاریخ جلالی از طریق شی $date دسترسی خواهید داشت. اما سازنده این کلاس سه پارامتر را به عنوان تنظیمات سیستم قبول می‌کند:

$date = new jDateTime(true, true, 'Asia/Tehran');

پارامتر اول، تعیین می‌کند که اعداد سیستم به فارسی تبدیل شوند یا نه. مثلا ۱۲۳۴ به ۱۲۳۴، این گزینه به صورت پیش‌فرض فعال است. برای غیر فعال کردن آن می‌توانید این پارامتر را به false تغییر دهید.
پارامتر دوم تبدیل تاریخ به جلالی را تعیین می‌کند و به صورت پیش‌فرض فعال است. در صورتی که می‌خواهید از این کلاس برای تاریخ میلادی استفاده کنید، این پارامتر را false تعیین کنید. توجه کنید که اگر این گزینه را غیرفعال کنید، دیگر اعداد به فارسی تبدیل نمی‌شوند حتی اگر آن را فعال کرده باشید.
پارامتر سوم، منطقه زمانی است. در سیستم های یونیکس مثل لینوکس و مکینتاش، منطقه زمانی پیش‌فرض GMT (ساعت گرینویچ) و در سیستم‌های ویندوز، منطقه زمانی پیشفرض، منطقه زمانی سیستم عامل انتخاب شده است. برای تعیین منطقه زمانی شما می‌توانید یکی از مناطق زمانی را که پی‌اچ‌پی قبول می‌کند به صورت متنی به کلاس ارسال کنید. برای مثال منطقه زمانی ایران Iran/Tehran و منطقه زمانی نیویورک America/New_York است. (لیستی از مناطق زمانی معتبر)

دقت کنید این پارامتر‌ها به عنوان پیشفرض‌های سیستم در نظر گرفته می‌شوند و در طول اجرای برنامه معتبرند.

متد date

برای دریافت تاریخ می‌توانید از متد date در این کلاس به این صورت استفاده کنید:

$date = new jDateTime(true, true, 'Asia/Tehran');
echo $date->date("l j F Y H:i");

دو پارامتر اول متد date دقیقا مانند تابع date پی‌اچ‌پی است. پارامتر اول یک رشته قالب بندی، و پارامتر دوم زمان مورد نظر برای قالب‌بندی بر اساس ثانیه از اول ژانویه ۱۹۷۰ (مبنای تاریخ برنامه نویسی یا Epoch Time). در صورتی که می‌خواهید تاریخ را بر اساس زمان کنونی محاسبه کنید، می‌توانید متد date را بدون این پارامتر اجرا کنید و یا از تابع time() در پی‌اچ‌پی استفاده کنید.

توجه کنید در صورتی که هنگام ایجاد شی از روی کلاس پارامتر‌های ورودی را تنظیم کرده باشید (که در بالا توضیح داده شد)، متد date بر اساس آن‌ها عمل خواهد کرد. اما گاهی شما نیازدارید که به صورت موقت تنظیمات را تغییر دهید و نمیخواهید که این تنظیمات روی کل کلاس تاثیر داشته باشد. برای این منظورم، شما می‌توانید سه پارامتر دلخواه را به متد date ارسال کنید:

$date->date("d-m-Y", time(), false, true, 'America/New_York');

پارامتر سوم، چهارم و پنجم، دقیقا مثل پارامتر‌هایی که هنگام ساخت شی به کلاس ارسال کردید، عمل می‌کنند. پارامتر اول تبدیل اعداد، پارامتر دوم تاریخ جلالی و پارامتر سوم منطقه زمانی را تعیین می‌کنند. برای استفاده از مقادیر پیشفرض هرکدام از این پارامتر ها می‌توانید به آنها null ارسال کنید.
برای مثال اگر منطقه زمانی را Asia/Tehran انتخاب کرده‌اید ولی میخواهید یک رشته تاریخ را بر اساس منطقه زمانی نیویورک چاپ کنید، می‌توانید از دستور زیر استفاده کنید:

$date->date("d-m-Y", time(), null, null, 'America/New_York');

دستور بالا رشته قالب بندی شده بر اساس تنظیمات پیشفرض سیستم و منطقه زمانی نیویورک را برمی‌گرداند. در صورتی که دقیقا بعد از این دستور، مجددا متد date را اینبار بدون این پارامترها فراخوانی کنید، همه تنظیمات در حالت پیشفرض خواهند بود.

متد gDate

همچنین برای هرچه ساده تر شدن این فرآیند، در صورتی که می‌خواهید از تاریخ میلادی استفاده کنید و به هر دلیلی نمی‌خواهید یا نمی‌توانید پارامتر های سوم و چهارم متد date را تنظیم نمایید، می‌توانید از متد کمکی gDate استفاده کنید. پارامتر اول و دوم این متد همانند متد date است و پارامتر سوم آن منطقه زمانی است (دلخواه). این متد همواره تاریخ را به میلادی باز می‌گرداند:

$date->gDate("Y-m-d", time(), 'Asia/Tehran');

متد strftime

این متد مانند متد date تاریخ را به شکل دلخواه شما قالب بندی می‌کند، با این تفاوت که بجای حروف تعیین شده در دستور تابع date() پی‌اچ‌پی، همانند تابع strftime() کار می‌کند. آرگومان‌های ورودی این متد دقیقا مانند متد date می‌باشند. برای مشاهده لیست علائم پشتیبانی شده صفحه تابع strftime() در سایت پی‌اچ‌پی را ببینید. مثال:

$date->strftime("%x %H", time(), false, true, 'America/New_York');

متد mktime

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

$time = $date->mktime(0,0,0,10,2,1368);

پارامتر‌های ورود این متد دقیقا همانند پارامتر‌های تابع mktime() در پی‌اچ‌پی هستند. به ترتیب: ساعت، دقیقه، ثانیه، ماه، روز، سال. خروجی این متد Unix Timestamp است که می‌توانید آن را در متد date استفاده کنید. برای مثال برای نمایش خروجی مثال بالا:

$time = $date->mktime(0,0,0,10,2,1368);
echo $date->date("l j F Y", $time); //خروجی‫:‬ شنبه ۲ دی ۱۳۶۸

متد mktime غیر از پارامتر‌های اصلی دو پارامتر اختیاری نیز دریافت می‌کند، پارامتر هفتم، که مشخص می‌کند تاریخ وارد شده در پارامترهای قبلی جلالی است یا خیر. به صورت پیش‌فرض این متد بر اساس تنظیمات اصلی کلاس عمل می‌کند. ولی گاهی وقتی تنظیمات اصلی جلالی است و شما می‌خواهید از همین متد برای تاریخ میلادی استفاده کنید، بدین منظور باید پارامتر هفتم را false ارسال نمایید:

$time = $date->mktime(0,0,0,12,23,2011, false);

برعکس این عمل نیز امکان پذیر است. برای مثال در تنظیمات اصلی کلاس پارامتر جلالی غیر فعال شده‌است، ولی شما می‌خواهید از متد mktime برای تاریخ جلالی استفاده کنید که در این حالت باید پارامتر هفتم true باشد.
پارامتر هشتم که کاملا دلخواه است پارامتر منطقه زمانی است. به صورت پیش‌فرض از تنظیمات اصلی کلاس استفاده می‌شود.

متد checkdate

از این متد برای اعتبارسنجی تاریخ جلالی یا میلادی می‌توانید استفاده کنید. سه آرگومان اول این متد به ترتیب ماه، روز و سال به صورت عددی می‌باشند و آرگومان آخر نوع تاریخ (میلادی، یا جلالی) را تعیین می‌کند. اگر true را به عنوان ورودی چهارم ارسال کنید تاریخ جلالی، false تاریخ میلادی و در غیر اینصورت از تنظیمات اولیه کلاس که در بالا معرفی شد استفاده می‌شود. این متد صحت تاریخ ورودی را بررسی می‌کند. مثال:

$date->checkdate(10, 21, 1390); // Return true
$date->checkdate(9, 31, 1390); // Return false

دریافت کلاس تاریخ جلالی

این کد بر اساس لیسانس پی‌اچ‌پی نسخه ۳.۰۱ منتشر می‌شود.
کاربران اجازه دارند از این کد در پروژه‌های شخصی و تجاری بدون محدودیت استفاده کنند، به شرط اینکه نام برنامه نویس «سالار کابلی» و دیگر کپی‌رایت های موجود در کد را به صورت دست نخورده در سورس کد باقی بگذارند.

توجه: برای استفاده از این کد باید نسخه پی‌اچ‌پی نصب شده روی سرور شما ۵.۲ به بالا باشد.

سورس‌کد کلاس تاریخ/زمان جلالی (شمسی) را به صورت یک فایل فشرده با پسوند tar.gz. یا با پسوند zip. دریافت کنید.
کلاس تاریخ جلالی در GitHub منتشر میشود، می‌توانید در این پروژه کدباز مشارکت کنید. (صفحه گیت هاب)

بدرود، سالار کابلی

ثبت ديدگاه


آدرس ايميل شما منتشر نخواهد شد.

ديدگاه‌ها ۳۲ ديدگاه


  • صالح:

    سلام سالار عزیز. ممنون از کار خوبت

    اما دو نکته ۱ :
    تاریخ شمسی در پی اج ۵٫۳ اضافه شده مطلبش رو هم در وبلاگ امید متقی به آدرس زیر میتوانید بینید. http://oxygenws.com/blog/archives/72-..-..html

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

    ۱۶ اردیبهشت ۱۳۹۰ - ۶:۱۷ ب.ظ
    • سالار کابلی:

      ممنون صالح عزیز.
      من از وجود قابلیت تاریخ شمسی در PHP5.3 اطلاع داشتم، حتی خیلی متدهای مفید هم میتونستم به این کلاس اضافه کنم اگر میخواستم از PHP5.3 استفاده کنم، اما حقیقت اینه که الان بسیاری از سرورهای Shared از PHP5.2 استفاده میکنن و هنوز هم میترسن از اینکه PHP5.3 رو نصب کنن و البته حق هم دارن. سیستم های فاجعه‌ای مثل جوملا نمیتونن خودشون رو سازگار کنن.

      در مورد گیت هاب هم درست میفرمایید، من از روز اول که این کد رو نوشتم روی گیت هاب منتشرش کردم اگر دقت کرده باشید لینک دانلود ها از گیت هاب هست و من تا الان حدود ۱۵ بار کلاس رو آپدیت کردم.
      http://github.com/sallar/jDateTime

      بدرود

      ۱۷ اردیبهشت ۱۳۹۰ - ۴:۴۱ ق.ظ
  • مرتضی:

    سلام
    یه سوالی داشتم می خواستم بدونم برای تبدیل TimeStamp میلادی به شمسی از چه تابعی استفاده کنم؟
    تو دیتابیسم مثلا Timestamp به این صورته : ۲۰۱۱-۰۵-۱۱ ۰۱:۰۸:۱۱

    ۲۱ اردیبهشت ۱۳۹۰ - ۱۰:۵۹ ق.ظ
  • baravak:

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

    ۲۲ اردیبهشت ۱۳۹۰ - ۱۰:۰۷ ق.ظ
  • MohammadReza:

    با سلام و خشته نباشید- بنده می خواستم یه نگاهی به این کد تاریخ بندازید و ببینید می شه شمسی کنید این کد رو.اگه بشه که خیلی ممنون می شم و لطف بزرگی کردید…
    http://s1.picofile.com/file/6903757542/calendar_class.zip.html
    این کد تاریخ سیستم jcore هستش و یه سوال دیگه هم دارم اینکه چطوری فایل css بایدا راست چین بشه؟ آموزش جامعی هست؟ خودتون بلدید؟

    خلاصه یه دنیا امید و آرزو پشت این کد خوابیده :D

    ۱۳ تیر ۱۳۹۰ - ۲:۰۱ ب.ظ
  • حمید:

    لطفا توضیح دهید که با این کلاس میشود تاریخ های یک CMS را شمسی کرد یا نه؟؟؟

    میخواهم مثلا تاریخ های vivvo را شمسی کنم.

    ۱۵ تیر ۱۳۹۰ - ۶:۰۳ ب.ظ
  • sahar:

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

    ۱۴ مرداد ۱۳۹۰ - ۴:۳۱ ب.ظ
  • جانان:

    سلام!من یه سایت دارم آماده میکنم.فایل تقویمتون دانلود کردم و توی پروژ ام کپی کردم ولی
    بعدش نمیدونم اصلا دستوراتی که گفتین کجا بنویسم ، میشه یکم راهنماییم کنین؟

    ۲۲ مرداد ۱۳۹۰ - ۱۱:۵۵ ق.ظ
  • سالار کابلی:

    @جانان
    طبق راهنمای بالا، بالای فایلتون، یه شی از کلاس jDateTime بسازید، و هرجایی که نیاز دارید (طبق ادامه راهنما) ازش استفاده کنید.

    ۰۲ شهریور ۱۳۹۰ - ۹:۲۲ ب.ظ
  • میلاد صفاجوی:

    سالار جان خیلی سالاری
    سیستمی واسه جاوااسکریپت نداری؟
    اینا php بودن واسه همین من نمی تونم تو بعضی از مدیریت محتوا ها ازشون استفاده کنم. اگه بخوام این تابع رو به جاوا اسکریپت در بیارم باید چیکار کنم؟

    ۰۹ شهریور ۱۳۹۰ - ۵:۵۲ ب.ظ
    • سالار کابلی:

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

      ۱۷ شهریور ۱۳۹۰ - ۱:۱۱ ق.ظ
  • نوید:

    کار تو حرف نداره! مثل همیشه تکی پسر.

    ۱۹ شهریور ۱۳۹۰ - ۵:۲۴ ب.ظ
  • نوید:

    ممنون سالار جان
    تو قالبهای اسمارتی چجوری میشه تاریخ رو به شمسی نشون داد؟

    ۱۵ مهر ۱۳۹۰ - ۱۱:۵۰ ب.ظ
  • احمدینا:

    ممنون از شما مفید بود

    ۲۷ مهر ۱۳۹۰ - ۱۰:۲۴ ب.ظ
  • یه دوست:

    سلام سالار عزیز
    رفتی تهران که اینجور بی سوادهای ندون دور ورت بپلکن.راستی زیاد به اینا افتخار میکنی.
    قربانت

    ۰۶ آبان ۱۳۹۰ - ۱:۵۵ ق.ظ
  • مصطفی:

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

    ۱۳ آذر ۱۳۹۰ - ۱:۰۸ ق.ظ
  • دانیال:

    متاسفانه این کد تاریخ امروز که ۱۳۹۰/۰۹/۲۰ هست رو جمعه ۲۰ آبان نشون میده . یعنی یک ماه اختلاف زمان وجود داره ؟!..
    چطور میشه این مشکل رو بر طرف کرد . ممنون میشم اگر اطلاع رسانی کنید . در ضمن اگر نحوه نمایش جز به جز زمان و تاریخ رو هم بعنوان نمونه در یک فایل قرار بدید که بدونیم چطور میشه ساعت و تاریخ و همچنین قبل از ظهر و بعد ازظهر و .. استفاده کنیم بسیار عالی میشه .
    سپاس

    ۲۰ آذر ۱۳۹۰ - ۲:۵۵ ب.ظ
  • reza:

    با سلام و تشکر از کار مفیدتون می خواستم نحوه تبدیل تاریخ میلادی به شمسی رو اگه ممکنه توضیح دهید تو فایل مثال هم نتونستم نحوه تبدیل رو ببینم
    باتشکر : رضا

    ۲۷ آذر ۱۳۹۰ - ۱۲:۳۰ ب.ظ
  • آرش همت:

    سلام سالار، ممنون از این کلاست، هر از گاهی یکی باید بیاد این کد قدیمی تبدیل رو بروز بکنه و مرتبش کنه، کدی که نوشتی نسبتا تمیزه و از کد قدیمی بهتره یه چنتا پیشنهاد دارم برات که اگر بتونی انجامش بدی خیلی خوب میشه:
    ۱. فکر کنم انقدر php بلدی که کلاست رو طوری بنویسی که اگر کاربر php 5.3 و intl رو داشت از اون استفاده کنه (۱۷ برابر سریعتره!)
    ۲. یه نگاهی به کد این بابا هم بنداز: https://github.com/amsa/Shamsi-Date/blob/master/Date.php
    ۳. اسمش رو persian date بذاری خیلی بهتر میشه! جلال پادشاهی بود که این تاریخ رو کرد تاریخ رسمی که کار خاصی نبود خیام و بروبچ قدیم خیلی بیشتر رو این کار کردن.
    ۴. اگر حوصله داشتی یه تنظیم بذار که بشه ماه‌ها رو به اسم افغانی‌شون هم نشون بدی

    ۱۷ دی ۱۳۹۰ - ۲:۰۲ ق.ظ
    • سالار کابلی:

      سلام آرش جان!
      ممنون رفیق. لطف داری.
      من بخاطر Compatibility نرفتم سراغ اون کلاس ولی این پیشنهادت که «اگر» ۵.۳ به بالا بود ازون استفاده کنه خیلی خوبه. ممنون. مینویسمش و حتمن عملیش میکنم.
      اسم های افغانی و Persian Date هم یادداشت کردم دوست من.
      ممنون.

      ۱۷ دی ۱۳۹۰ - ۱۱:۰۴ ب.ظ
  • حمید:

    دوست عزیر کارت خیلی عالیه اما چند تا مشکل وجود داره
    این توابع باید مجدد بازنویسی بشه می تونید مجدد راهنمایی کنید؟
    خواستم جایی استفاده کنم موفق نشدم مشکل عدم تعریف بعضی توابع است

    DateTime::add
    DateTime::createFromFormat
    DateTime::diff
    DateTime::format
    DateTime::getLastErrors
    DateTime::getOffset
    DateTime::getTimestamp
    DateTime::getTimezone
    DateTime::modify
    DateTime::__set_state
    DateTime::setDate
    DateTime::setISODate
    DateTime::setTime
    DateTime::setTimestamp
    DateTime::setTimezone
    DateTime::sub
    DateTime::__wakeup

    ۰۴ بهمن ۱۳۹۰ - ۶:۴۹ ب.ظ
  • حمید:

    در حقیقت منظورم توابع
    jDateTime::add
    jDateTime::createFromFormat
    jDateTime::diff
    jDateTime::format
    jDateTime::getLastErrors
    jDateTime::getOffset
    jDateTime::getTimestamp
    jDateTime::getTimezone
    jDateTime::modify
    jDateTime::__set_state
    jDateTime::setDate
    jDateTime::setISODate
    jDateTime::setTime
    jDateTime::setTimestamp
    jDateTime::setTimezone
    jDateTime::sub
    jDateTime::__wakeup
    هستش

    ۰۴ بهمن ۱۳۹۰ - ۶:۵۲ ب.ظ
  • حمید:

    کسی نبود به ما کمک کنه!!!!!!!!!!!!
    ممنون میشم راهنمایی کنید

    ۱۱ بهمن ۱۳۹۰ - ۶:۱۵ ب.ظ
  • سامان:

    مرسی سالار جان.
    میخوام الان ازش استفاده کنم.
    هیچی بهتر از تاریخ تولد آدم نمیشه :دی

    ۰۱ اردیبهشت ۱۳۹۱ - ۸:۵۳ ق.ظ
  • سامان:

    سالار جان. یه جا از Iran/Tehran نام بردی. فک کنم Asia/Tehran باید درست باشه.

    مرسی. موفق باشی.

    ۰۳ اردیبهشت ۱۳۹۱ - ۱:۰۴ ب.ظ
  • پژمان:

    سلام دوستان عزیز
    کسی میتونه بگه آیا میشه از این تاریخ در phpFox هم استفاده کرد؟
    اگه آره راهنمایی کنید.

    ۱۲ اردیبهشت ۱۳۹۱ - ۶:۰۸ ب.ظ
  • میلاد ریحانی:

    خیلی ممنون از انتشار این کلاس.
    فقط یک چیز که اگر اضافه بشه بهتر امکان اینکه تاریخ و ساعت جدا از هم تبدیل بشن.
    چون من در حال توسعه یه سیستم هستم که رو سرور لوکال اجرا میشه و اون سرور ساعتش ساعت رسمی ایران و هنگام استفاده از کلاس شما ۳:۳۰ ازش کم میشه که نباید بشه.

    ضمنا من این رو برای فریمورک FuelPHP ، به صورت یک پکیج در آوردم که بزودی در git میزارم.

    ۲۵ اردیبهشت ۱۳۹۱ - ۱۱:۲۵ ب.ظ
  • میلاد ریحانی:

    ببخشید که دوباره مزاحم میشم.منتها یه سوال جدید برام پیش اومد.
    فرض کنید شما همه رکورد های اردیبهشت رو می خواین کوئری بگیرین.
    اول تو MySql از TIMESTAMP استفاده می کنین یا DATETIME؟
    دوم چطور ۱ ماه رو به تاریخ شمسی اضافه می کنید؟

    ۲۶ اردیبهشت ۱۳۹۱ - ۱:۳۵ ق.ظ