ساده ترین روش تبدیل تاریخ میلادی به شمسی
گروه: C#
تاریخ ثبت: ۹۲/۱۰/۶
نویسنده: امیر فراهانچی

در ابتدا برای گرفتن تاریخ ورودی از کاربر یک متد خصوصی(فقط دسترسی داخل کلاسی) تعریف میکنیم. این متد بصورت غیر مستقیم و از طریق متد عمومی تبدیل تاریخ می تواند مقداردهی شود. این یک کار اضافی است و میتوانیم تاریخ ورودی کاربر را مستقیما به متد تبدیل تاریخ بفرستیم
پارامتر ورودی تابع از نوع DateTimePicker تعریف شده است (کنترل فرم مخصوص انتخاب تاریخ)

private DateTime getGregorianDate(DateTimePicker mainInput)
        {
یک متغیر از نوع تاریخ ایجاد میکنیم برای نگهداری تاریخ ورودی
            DateTime inputDate = new DateTime();
برای اطمینان خاطر از اجرای صحیح کد، آنرا داخل بلوک سعی و خطا قرار میدهیم
            try
            {
پارامتر تابع را به متغیر تعریف شده فوق منتسب میکنیم
                inputDate = mainInput.Value;
و آن مقدار را مقدار بازگشتی تابع قرار می دهیم
                return inputDate;
            }
            catch (Exception ex)
            {
اگر خطایی رخ داد کاربر را مطلع میکنیم.
با استفاده از کنترل DateTimePicker درصد ورود به این بخش بسیار ناچیز است
                MessageBox.Show(ex.Message);
در صورت بروز خطا حین ورود تاریخ، تاریخ فعلی سیستم را بر می گرداند
                return DateTime.Now;
            }
        }

اکنون متد تبدیل تاریخ را پیاده سازی می کنیم. نوع بازگشتی متد، رشته است.
توجه: افزودن using System.Globalization برای استفاده از کلاس PersianCalendar  ضروری است .

public string gregorianToShamsi(DateTimePicker input)
        {           
دوباره برای اطمینان خاطر از اجرای صحیح کد، آنرا داخل بلوک سعی و خطا قرار میدهیم
            try
            {
یک متغیر از نوع تاریخ ایجاد میکنیم برای نگهداشتن تاریخ ورودی
                DateTime gregorian = new DateTime();
متغیر ایجاد شده را با مقدار بازگشتی متد گیرنده ورودی مقداردهی میکنیم
                gregorian = getGregorianDate(input);
متغیری از نوع تقویم هجری شمسی می سازیم
                PersianCalendar pc = new PersianCalendar();
سال و ماه و روز متغیر شمسی ایجاد شده را به سادگی از روی تاریخ ورودی بدست می آوریم
                int pcYear = pc.GetYear(gregorian);
                int pcMonth = pc.GetMonth(gregorian);
                int pcDay = pc.GetDayOfMonth(gregorian);
مقادیر تاریخ شمسی بدست آمده را با استفاده از string.Format به شکلی دلخواه تبدیل به رشته می کنیم
                string convertedDate = string.Format("{0}/{1}/{2}", pcYear, pcMonth, pcDay);
مقدار تاریخ را بصورت رشته ای بازگشت می دهیم تا کاربر به نحو دلخواه از آن استفاده کند مثلا Lable یا Text Box
                return convertedDate;
            }
            catch (Exception ex)
            {
اگر خطایی رخ داد کاربر را مطلع میکنیم
                MessageBox.Show(ex.Message);
                return "operation caused error";
            }
        }

اکنون کاربر می تواند از طریق ساختن یک شیء از این کلاس، به متد
(gregorianToShamsi(DateTimePicker input
تاریخ ورودی را ارسال کند و نتیجه را بصورت رشته دریافت کند.

MiladiToShamsiDateConversion m2sh = new MiladiToShamsiDateConversion();
textBox1.Text = m2sh.gregorianToShamsi(dateTimePicker1);


Copyright © 2006 - 2011 All Rights Reserved.
Please direct your questions or comments to