PDA

View Full Version : مشکل در تاریخ ماه های 31 روز



meitti
چهارشنبه 09 مهر 1393, 15:24 عصر
وقتی ماه ها 31 روز باشد در ماه های زوج 2 , 4 , 6 خطای زیر رو میده
124092

hamid_hr
چهارشنبه 09 مهر 1393, 16:30 عصر
اون convert میاد استرینگو به تاریخ میلادی تبدیل میکنه
یعنی ورودی تابع باید یه تاریخ میلادی باشه
تاریخ میلادی تو این ماهها 31 روز نداره و خطا میده

meitti
چهارشنبه 09 مهر 1393, 19:55 عصر
من الان بخوام دو تا تاریخ شمسی رو با هم مقایسه کنم چیکار باید بکنم , نمبخوام به میلائی تبدیل بشه؟

fakhravari
چهارشنبه 09 مهر 1393, 22:52 عصر
اینطوری سخته
یه تابع بنویس 2 ورودی string بگیره ولی تبدیل کنه میلادی

group45
چهارشنبه 09 مهر 1393, 23:10 عصر
شما بهتره یه کلاس بنویسی واسه مقایسه دو تاریخ شمسی
اول سعی کن که بنویسی اگه دیدی نمیتونی بگو تا برات بزارم

Mahmoud.Afrad
پنج شنبه 10 مهر 1393, 17:42 عصر
اول روز و ماه سال رو از هم جدا کن بعد به صورت زیر تبدیل به میلادی کن:
DateTime dt1 = new DateTime(year, month, day, new PersianCalendar());

pouria_bayat
پنج شنبه 10 مهر 1393, 20:53 عصر
سلام دوست من میتونی از این کلاس استفاده کنی که خودم نوشتمش برای یک پروژه از قبل: چندتا تابع داره برای تبدیل تاریخ میلادی به شمسی و اضافه کردن روز به تاریخ و ...

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;
}

}