behnam3000
چهارشنبه 01 مهر 1394, 19:18 عصر
در تاریخ 31 آگوست مشکل دارد ( DateTime ارور 30 روز میدهد )لطفا کمکم کنید
2015/8/31 یا 1394/06/09 ارور نمیده ولی datetime میگه باید برج 8 تعداد روزش 31 باشه
public class DateConvertor
{
// Convert Function ------------------------------------
public string MiladiToShamsi(DateTime Milady, Boolean OnlyDate)
{
if (Milady == null)
return null;
int shamsiDay, shamsiMonth, shamsiYear;
int dayCount, farvardinDayDiff, deyDayDiff;
int[] sumDayMiladiMonth = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
int[] sumDayMiladiMonthLeap = { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 };
farvardinDayDiff = 79;
if (MiladiIsLeap(Milady.Year))
{
dayCount = sumDayMiladiMonthLeap[Milady.Month - 1] + Milady.Day;
}
else
{
dayCount = sumDayMiladiMonth[Milady.Month - 1] + Milady.Day;
}
if ((MiladiIsLeap(Milady.Year - 1)))
{
deyDayDiff = 11;
}
else
{
deyDayDiff = 10;
}
if (dayCount > farvardinDayDiff)
{
dayCount = dayCount - farvardinDayDiff;
if (dayCount <= 186)
{
switch (dayCount % 31)
{
case 0:
shamsiMonth = dayCount / 31;
shamsiDay = 31;
break;
default:
shamsiMonth = (dayCount / 31) + 1;
shamsiDay = (dayCount % 31);
break;
}
shamsiYear = Milady.Year - 621;
}
else
{
dayCount = dayCount - 186;
switch (dayCount % 30)
{
case 0:
shamsiMonth = (dayCount / 30) + 6;
shamsiDay = 30;
break;
default:
shamsiMonth = (dayCount / 30) + 7;
shamsiDay = (dayCount % 30);
break;
}
shamsiYear = Milady.Year - 621;
}
}
else
{
dayCount = dayCount + deyDayDiff;
switch (dayCount % 30)
{
case 0:
shamsiMonth = (dayCount / 30) + 9;
shamsiDay = 30;
break;
default:
shamsiMonth = (dayCount / 30) + 10;
shamsiDay = (dayCount % 30);
break;
}
shamsiYear = Milady.Year - 622;
}
if (OnlyDate == false)
{
String Hour, Minute;
if (Milady.Hour < 10) { Hour = "0" + Milady.Hour; } else { Hour = Convert.ToString(Milady.Hour); }
if (Milady.Minute < 10) { Minute = "0" + Milady.Minute; } else { Minute = Convert.ToString(Milady.Minute); }
return (shamsiYear + "/" + shamsiMonth + "/" + shamsiDay + " " + Hour + ":" + Minute);
}
else
{
return (shamsiYear + "/" + shamsiMonth + "/" + shamsiDay);
}
}
لطفا کمکم کنید خیلی مهمه برام موقع نمایش مشکل نداره ولی موقع محاصبه مشکل داره
2015/8/31 یا 1394/06/09 ارور نمیده ولی datetime میگه باید برج 8 تعداد روزش 31 باشه
public class DateConvertor
{
// Convert Function ------------------------------------
public string MiladiToShamsi(DateTime Milady, Boolean OnlyDate)
{
if (Milady == null)
return null;
int shamsiDay, shamsiMonth, shamsiYear;
int dayCount, farvardinDayDiff, deyDayDiff;
int[] sumDayMiladiMonth = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
int[] sumDayMiladiMonthLeap = { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 };
farvardinDayDiff = 79;
if (MiladiIsLeap(Milady.Year))
{
dayCount = sumDayMiladiMonthLeap[Milady.Month - 1] + Milady.Day;
}
else
{
dayCount = sumDayMiladiMonth[Milady.Month - 1] + Milady.Day;
}
if ((MiladiIsLeap(Milady.Year - 1)))
{
deyDayDiff = 11;
}
else
{
deyDayDiff = 10;
}
if (dayCount > farvardinDayDiff)
{
dayCount = dayCount - farvardinDayDiff;
if (dayCount <= 186)
{
switch (dayCount % 31)
{
case 0:
shamsiMonth = dayCount / 31;
shamsiDay = 31;
break;
default:
shamsiMonth = (dayCount / 31) + 1;
shamsiDay = (dayCount % 31);
break;
}
shamsiYear = Milady.Year - 621;
}
else
{
dayCount = dayCount - 186;
switch (dayCount % 30)
{
case 0:
shamsiMonth = (dayCount / 30) + 6;
shamsiDay = 30;
break;
default:
shamsiMonth = (dayCount / 30) + 7;
shamsiDay = (dayCount % 30);
break;
}
shamsiYear = Milady.Year - 621;
}
}
else
{
dayCount = dayCount + deyDayDiff;
switch (dayCount % 30)
{
case 0:
shamsiMonth = (dayCount / 30) + 9;
shamsiDay = 30;
break;
default:
shamsiMonth = (dayCount / 30) + 10;
shamsiDay = (dayCount % 30);
break;
}
shamsiYear = Milady.Year - 622;
}
if (OnlyDate == false)
{
String Hour, Minute;
if (Milady.Hour < 10) { Hour = "0" + Milady.Hour; } else { Hour = Convert.ToString(Milady.Hour); }
if (Milady.Minute < 10) { Minute = "0" + Milady.Minute; } else { Minute = Convert.ToString(Milady.Minute); }
return (shamsiYear + "/" + shamsiMonth + "/" + shamsiDay + " " + Hour + ":" + Minute);
}
else
{
return (shamsiYear + "/" + shamsiMonth + "/" + shamsiDay);
}
}
لطفا کمکم کنید خیلی مهمه برام موقع نمایش مشکل نداره ولی موقع محاصبه مشکل داره