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

 
 
  تبدیل تاریخ شمسی به میلادی
C#
تاریخ ثبت:  ۹۲/۷/۲۷
تعداد نمایش:  ۴۵۸۴
  نویسنده: محمد مصراوغلی
 
   ۷  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share

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


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

  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
محمد مصراوغلی
مديرعامل گروه توليدي شمس - BOS
همه مقاله های نوشته شده توسط این کاربر (۲)
 
  پیام جدید
هیچ سؤال یا نظری برای این موضوع فرستاده نشده است.

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

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