PDA

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



sa_ghaznavi
سه شنبه 20 مرداد 1388, 15:58 عصر
من دو تا تاریخ دارم که می خواهم با هم مقایسه کنم مانند زیر :
31/02/1388 و 05/10/1385
برای مقایسه از دستور زیر استفاده می کنم :

string firstDate="1385/10/05";
string secondDate="1388/02/31";
if (Convert.ToDateTime(firstDate) < Convert.ToDateTime(firstDate))
{
}

مشکل اینجاست که C# تاریخها رو میلادی می بینه و در نتیجه چون در تاریخ میلادی برج 2 ، 28 روز است در نتیجه خطا میده و تاریخ دوم رو قبول نمیکنه .
چطور می تونم دو تاریخ رو به صورت شمسی با هم مقایسه کنم؟

s_ahmadneya
سه شنبه 20 مرداد 1388, 16:38 عصر
من دو تا تاریخ دارم که می خواهم با هم مقایسه کنم مانند زیر :
31/02/1388 و 05/10/1385
برای مقایسه از دستور زیر استفاده می کنم :

string firstDate="1385/10/05";
string secondDate="1388/02/31";
if (Convert.ToDateTime(firstDate) < Convert.ToDateTime(firstDate))
{
}

مشکل اینجاست که C# تاریخها رو میلادی می بینه و در نتیجه چون در تاریخ میلادی برج 2 ، 28 روز است در نتیجه خطا میده و تاریخ دوم رو قبول نمیکنه .
چطور می تونم دو تاریخ رو به صورت شمسی با هم مقایسه کنم؟
اولا" اگر تاریخ ها بصورت رشته ده کاراکتری باشد یعنی ماه اولا بصورت 01 باشد
به راحتی می توان دو رشته را مقایسه کرد و مشکلی پیش نمی آید
ثانیا" جنابعالی اگه بخواهی بصورت تاریخی مقایسه نمایی که گاهی مجبور به استفاده از این روش می شویم مثلا" اگر بخواهیم بدانیم چند هفته بیشر است ویا چند ثاینه کمتر است.
باید بصورت فرمت تاریخ داشته باشیم برای این کار باید ابتدا به تاریخ میلادی تبدیل و بعد مقایسه کرد.برای این کار C# ابزار تاریخ شمسی را دارد برای نحوه این کار لطفا" به تاپیکها ی زیادی که در این مورد وجود دارد مراجعه نمایید
موفق باشید

Reza_Yarahmadi
سه شنبه 20 مرداد 1388, 18:49 عصر
اگه تاریخها رو بصورت string میخوای با هم مقایسه کنی میتونی از متد CompareTo استفاده کنی

secondDate.CompareTo(firstDate)
مقدار بازگشتی این متد یک عدد است.
اگر secondDate بزرگتر باشه مقدار 1
اگر مساوی باشن مقدار 0
و اگه secondDate کوچکتر باشه مقدار -1 رو برمیگردونه.
البته این به شرطیه که هر دو تاریخ با یک فرمت باشن یعنی تعداد کاراکترها برابر و مکان سال ، ماه و روز مثل هم باشه!!

saed2006
سه شنبه 20 مرداد 1388, 19:14 عصر
خب واسه این کار میتونی یک متد بنویسی و عمل مقایسه دو تاریخ شمسی رو انجام بدی-خیلی ساده است اول سال ها رو با هم مقایسه میکنی اگر مساوی بودند ماهها رو و اگر اون ها هم مساوی بودن روز ها رو مقایسه میکنی و نتیجه رو بر میگردونی
فکر نمیکنم کار سختی باشه

اَرژنگ
سه شنبه 20 مرداد 1388, 19:56 عصر
خب واسه این کار میتونی یک متد بنویسی و عمل مقایسه دو تاریخ شمسی رو انجام بدی-خیلی ساده است اول سال ها رو با هم مقایسه میکنی اگر مساوی بودند ماهها رو و اگر اون ها هم مساوی بودن روز ها رو مقایسه میکنی و نتیجه رو بر میگردونی
فکر نمیکنم کار سختی باشه

۲ تا تاریخ شمسی را چطوری مقایسه میکنند؟

saeed2rele
سه شنبه 20 مرداد 1388, 20:41 عصر
ساده ترین کار پست 2 هستش

saed2006
سه شنبه 20 مرداد 1388, 20:44 عصر
واسه مقایسه از این متد استفاده کنید


public char ComparePersianDate(string dt1, string dt2)
{
int yr1 = int.Parse(dt1.Substring(0, 4));
int yr2 = int.Parse(dt2.Substring(0, 4));
int mth1 = int.Parse(dt1.Substring(5, 2));
int mth2 = int.Parse(dt2.Substring(5, 2));
int dy1 = int.Parse(dt1.Substring(8, 2));
int dy2 = int.Parse(dt2.Substring(8, 2));


if (yr1 < yr2)
{
return '<';
}
else if (yr1 > yr2)
{
return '>';
}
else if (yr1 == yr2)
{

if (mth1 > mth2)
{
return '>';
}
else
{
if (mth1 < mth2)
{
return '<';
}
else if (mth1 == mth2)
{
if (dy1 > dy2)
{
return '>';
}
else if (dy1 < dy2)
{
return '<';
}
else
{
return '=';
}
}

}
}
return '-';
}

ComparePersianDate("1388/12/01", "1388/12/01")
کد رو واسه تاریخی که دادم ازمایش کنید البته چون وقت نداشتم بیشتر نتونستم روش کار کنم باقی کار رو خودت انجام بده

mnasrin
یک شنبه 22 آذر 1388, 12:18 عصر
کسی میدونه مقایسه تاریخ که هردو string هستند چطوری مقایسه می شوند؟