تبدیل تاریخ شمسی به میلادی
گروه: C#
تاریخ ثبت: ۹۲/۷/۲۷
نویسنده: محمد مصراوغلی

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


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


public string Shamsi(string date)
{
     int[] arrMonths ={ 31, 28, 31,30, 31, 30,31,31, 30, 31,30, 31 };
     int[] arrStart ={ 21, 20, 21, 21, 22, 22, 23, 23, 23, 23, 22, 22 };
     char[] sep ={ '/' };
     string[] arrDate = date.Split(sep);
     int year = Convert.ToInt32(arrDate[0]);
     int month = Convert.ToInt32(arrDate[1]);
     int day = Convert.ToInt32(arrDate[2]);
 
     if (year % 4 == 0)
     {
          for (int i = 2; i < 12; i++)
                    arrStart[i]--;
     arrMonths[1]++;
     if (month == 1)   arrStart[11]++;
     }
     else
 
     if (year % 4 == 1)
        {
        arrStart[0]--;
        arrStart[1]--;
        if (month == 1) arrStart[11]--;
        }
      year = month <= 3 ? year - 622 : year - 621;
      if (month == 3 && day >= arrStart[2]) year++;
      if (day < arrStart[month - 1])
      {
      int i = month == 1 ? 11 : month - 2;
      day = day - arrStart[i] + arrMonths[i] + 1;
      month -= 3;
      }
      else
      {
      day = day - arrStart[month - 1] + 1;
      month -= 2;
      }
      if (month <= 0) month += 12;
      return year + "/" + Convert.ToString(month).PadLeft(2,'0') +  "/" +
      Convert.ToString(day).PadLeft(2,'0');
}

 

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

حالا دو عنصر
TextBox بر روی فرم قرار دهید و نام آنها را به ترتیب txtMilady و txtShamsi در نظر بگیرید. سپس یک عنصر Button بر روی فرم قرار داده، نام آن را btnConvert و عنوان آن را Convert در نظر بگیرید.

بر روی دکمه
Convert دو بار کلیک کنید و کد زیر را در آن وارد کنید:


private void btnConvert_Click(object sender, EventArgs e)
{
    txtShamsi.Text = Shamsi(txtMilady.Text);
}

 

برنامه خود را اجرا کنید. در عنصر txtMilady یک تاریخ میلادی مثل 12/6/2004 وارد کنید و دکمه Convert را فشار دهید. امیدواریم نتیجه کار رضایت شما را جلب کرده باشد. اگر می خواهید از این تابع در کنسول استفاده کنید می توانید نتیجه کار خود را با استفاده از("Console.WriteLine("2004/6/12 ببینید.


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