یکشنبه ۳ بهمن ۱۳۹۵
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 

 
 
 ساده ترین روش تبدیل تاریخ میلادی به شمسی
C#
تاریخ ثبت:  ۹۲/۱۰/۶
تعداد نمایش:  ۱۲۲۴۳
  نویسنده: امیر فراهانچی
 
   ۱۱  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share

در ابتدا برای گرفتن تاریخ ورودی از کاربر یک متد خصوصی(فقط دسترسی داخل کلاسی) تعریف میکنیم. این متد بصورت غیر مستقیم و از طریق متد عمومی تبدیل تاریخ می تواند مقداردهی شود. این یک کار اضافی است و میتوانیم تاریخ ورودی کاربر را مستقیما به متد تبدیل تاریخ بفرستیم
پارامتر ورودی تابع از نوع 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);

  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
امیر فراهانچی
همه مقاله های نوشته شده توسط این کاربر (۱)
 
  پیام جدید
هیچ سؤال یا نظری برای این موضوع فرستاده نشده است.

 عنوان فرستنده تاریخ

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