وقتی ماه ها 31 روز باشد در ماه های زوج 2 , 4 , 6 خطای زیر رو میده
ضمیمه 124092
Printable View
وقتی ماه ها 31 روز باشد در ماه های زوج 2 , 4 , 6 خطای زیر رو میده
ضمیمه 124092
اون convert میاد استرینگو به تاریخ میلادی تبدیل میکنه
یعنی ورودی تابع باید یه تاریخ میلادی باشه
تاریخ میلادی تو این ماهها 31 روز نداره و خطا میده
من الان بخوام دو تا تاریخ شمسی رو با هم مقایسه کنم چیکار باید بکنم , نمبخوام به میلائی تبدیل بشه؟
اینطوری سخته
یه تابع بنویس 2 ورودی string بگیره ولی تبدیل کنه میلادی
شما بهتره یه کلاس بنویسی واسه مقایسه دو تاریخ شمسی
اول سعی کن که بنویسی اگه دیدی نمیتونی بگو تا برات بزارم
اول روز و ماه سال رو از هم جدا کن بعد به صورت زیر تبدیل به میلادی کن:
DateTime dt1 = new DateTime(year, month, day, new PersianCalendar());
سلام دوست من میتونی از این کلاس استفاده کنی که خودم نوشتمش برای یک پروژه از قبل: چندتا تابع داره برای تبدیل تاریخ میلادی به شمسی و اضافه کردن روز به تاریخ و ...
class ChangeDate
{
public static string MiladiToShamsi(DateTime _date)
{
PersianCalendar pc = new PersianCalendar();
StringBuilder sb = new StringBuilder();
try
{
sb.Append(pc.GetYear(_date).ToString("0000"));
sb.Append("/");
sb.Append(pc.GetMonth(_date).ToString("00"));
sb.Append("/");
sb.Append(pc.GetDayOfMonth(_date).ToString("00"));
return sb.ToString();
}
catch (ArgumentOutOfRangeException)
{
return null;
}
}
public static string ReturnSubDate(string Date)
{
Date = "%" + Date + "%";
int year = Int32.Parse(Extractor.Extract(Date, "%", "/", 1));
int month = Int32.Parse(Extractor.Extract(Date, "/", "/", 1));
int day = Int32.Parse(Extractor.Extract(Date, "/", "%", 2));
if (day == 30 )
{
if (month <= 6)
{
day++;
}
else
{
day = 1;
if (month < 12)
{
month++;
}
else
{
month = 1;
year++;
}
}
}
else if (day == 31)
{
day = 1;
month++;
}
else
{
day++;
}
Date = year.ToString() + "/" + month.ToString() + "/" + day.ToString();
return Date;
}
public static string ReturnToEndDate(string Date)
{
string[] words = Date.Split('/');
int year = Int32.Parse(words[0]);
int month = Int32.Parse(words[1]);
int day = Int32.Parse(words[2]);
if (day <= 30)
{
if (month <= 6)
{
day = day + 30;
month = month + (day / 31);
day = day % 31;
if (day == 0)
{
month--;
day = 31;
}
}
else
{ if (month < 12)
{
day = day + 30;
month = month + (day / 30);
day = day % 30;
if (day== 0)
{
day = 30;
month = month -1;
}
}
else
{
day = day + 30;
month = month + (day / 30);
day = day % 30;
year++;
if (day == 0)
{
day = 30;
month = month - 1;
}
if (month > 12)
month = month % 12;
}
}
}
else if (day == 31)
{
day = 30;
month++;
}
Date = year.ToString("0000") + "/" + month.ToString("00") + "/" + day.ToString("00");
return Date;
}
}