شاید برای شما هم پیش آمده باشد که در برنامه خود نیاز به مبدلی برای تبدیل تاریخ میلادی به شمسی و بالعکس داشته باشید. اگر بخواهید این مبدل را خودتان کدنویسی کنید، با دردسرهای فراوانی مانند پیدا کردن ارتباط و اختلاف تقویم شمسی و میلادی، نحوه محاسبه سال کبیسه و… روبرو خواهید شد. خوشبختانه زبان برنامه نویسی سی شارپ امکان تبدیل تقویم میلادی به شمسی و بالعکس را به سادگی برای شما فراهم میکند. این مبدل در کلاسی به نام PersianCalendar در مرجع System.Globalization تعبیه شده است و به راحتی می توان از آن استفاده کرد. برای این منظور، ابتدا این مرجع را به لیست مراجع پروژه خود اضافه کنید:
using System.Globalization;
حال می توانید از جنس کلاس PersianCalendar یک شی بسازید و از امکانات تقویم شمسی که در این کلاس موجود است، استفاده کنید:
PersianCalendar jc = new PersianCalendar();
[divider]
تبدیل تاریخ میلادی به شمسی:
DateTime dt = DateTime.Now; PersianCalendar jc = new PersianCalendar(); string year= jc.GetYear(dt).ToString(); string month += jc.GetMonth(dt).ToString(); string day += jc.GetDayOfMonth(dt).ToString(); string date = String.Format("{0}/{1}/{2}",year,month,day);
پس از اجرای قطعه کد بالا، محتوای متغیر date معادلِ شمسیِ تاریخ کنونی سیستم خواهد بود.
[divider]
تشخیص کبیسه بودن سال:
PersianCalendar jc = new PersianCalendar(); if(jc.IsLeapYear(1393)) { MessageBox.Show("سال کبیسه است"); } else { MessageBox.Show("سال کبیسه نیست"); }
در مثال فوق اگر سال وارد شده(۱۳۹۳ در این مثال) کبیسه باشد، پیامی با متن “سال کبیسه است” نمایش داده خواهد شد. در غیر اینصورت پیام “سال کبیسه نیست” نمایان خواهد شد.
[divider]
تبدیل تاریخ شمسی به میلادی:
PersianCalnedar jc = new PersianCalendar(); DateTime dt = jc.ToDateTime(1393,3,1,0,0,0,0);
در مثال فوق پارامترهایی که به متد ToDateTime داده شده اند، به ترتیب: سال، ماه، روز، ساعت، دقیقه، ثانیه و میلی ثانیه هستند.
همچنین می توانید نمونه پروژه مربوط به این آموزش را دانلود نمایید:
پسورد فایل: www.myempire.ir
[button color=”red” size=”medium” link=”https://myempire.ir/wp-content/uploads/Shamsi_Datewww.myempire.ir_.zip” target=”blank” ]دریافت نمونه پروژه[/button]
سلام
خیلی خوب بود. استفاده کردم.
ممنون
سلام،
خواهش میکنم، خوشحالم که مطلب مورد استفاده قرار گرفته
سلام
خیلی توی اینترنت دنبال یه مطلب بدرد بخور درباره تقویم شمسی گشتم اما مشکلم در این سایت حل شد.
خدا خیرتون بده
سلام، باعث دلگرمی ماست که مطالب سایت مورد استفادتون قرار گرفته. موفق و پیروز باشید!
سلام.
البته میدانیم که سال کبیسه میلادی و شمسی بر هم منطبق نیستند.
در تقویم شمسی کبیسه ۴ ساله و ۵ ساله داریم که محاسبات پیچیده ای هم دارد.
بر طبق مستندات موجود در سایت مایکروسافت، هر گاه عدد چهار رقمی سال(مثلا ۱۳۷۰) را بر عدد ۳۳ تقسیم کنیمو باقیمانده تقسیم یکی از اعداد ۱،۵،۹،۱۳،۱۷،۲۲،۲۶ یا ۳۰ باشد، سال کبیسه است. کتابخانه PersianCalendar با همین منطق سال کبیسه را محاسبه میکند.
منبع: مستندات مایکروسافت
سلام ممنون خیلی مفید بود