PDA

View Full Version : تاریخ قمری و میلادی و شمسی در سی شارپ



majid_i68
جمعه 10 آذر 1391, 06:45 صبح
سلام دوستان :کف:

من DLL تبديل انواع تاريخ رو میهوام.. طوريکه قابليت تبديل از هريک از 3 نوع تاريخ شمسي، ميلادي و قمري (هجري) را داشته باشد.

دمتون گرم:لبخند:

Mahmoud.Afrad
جمعه 10 آذر 1391, 11:21 صبح
نیازی به dll نیست. با یک متد میتونی اینکار رو انجام بدید:

//using System.Globalization;
enum DateType { PerisanCalendar, HijriCalendar, Default };

string DateConvert(string date, DateType inputDateType, DateType convertTo)
{
string[] st = date.Split('/');
int year, month, day;
DateTime inputDate;

try
{
year = int.Parse(st[0]);
month = int.Parse(st[1]);
day = int.Parse(st[2]);
}
catch (FormatException formatEx)
{
throw formatEx;
}
catch (IndexOutOfRangeException indexOutOfRangeEx)
{
throw indexOutOfRangeEx;
}

if (inputDateType == DateType.Default)
{
inputDate = new DateTime(year, month, day);
}
else if (inputDateType == DateType.PerisanCalendar)
{
inputDate = new DateTime(year, month, day, new PersianCalendar());
}
else
{
inputDate = new DateTime(year, month, day, new HijriCalendar());
}


if (convertTo == DateType.Default)
{
return inputDate.ToShortDateString();
}
else if (convertTo == DateType.PerisanCalendar)
{
PersianCalendar pc = new PersianCalendar();
return pc.GetYear(inputDate) + "/" + pc.GetMonth(inputDate) + "/" + pc.GetDayOfMonth(inputDate);
}
else
{
HijriCalendar hc = new HijriCalendar();
return hc.GetYear(inputDate) + "/" + hc.GetMonth(inputDate) + "/" + hc.GetDayOfMonth(inputDate);
}
}

inputDateType نوع تاریخ ورودی و convertTo نوع تاریخ بازگشتی.

به اینصورت میتونی استفاده کنید، مثلا:

try
{
txtShamsi.Text = DateConvert(txtInput.Text.Trim(), DateType.Default, DateType.PerisanCalendar);
}
catch (Exception ex)
{
MessageBox.Show("ورودی معتبر نیست. تاریخ را اصلاح کنید" + "\n" + ex.Message);
}