PDA

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



Yanehsar
جمعه 26 خرداد 1391, 14:00 عصر
سلام من دو تا maskedTextBox در فرم دارم که از نوع تاریخ میباشه
چطوری میتونم این دو تا تاریخ رو با هم مقایشه کنم؟
هدفم اینه که یکی از این تاریخ ها باید از اون یکی کوچکتر باشه.

Mahmoud.Afrad
جمعه 26 خرداد 1391, 16:08 عصر
اگر تاریخ ها به فرمت yyyy/mm/dd هست(روز و ماه دورقمی) میتونید از مقایسه رشته ها استفاده کنید
یا اینکه میتونید از کد زیر استفاده کنید
static DateTime dt1;
static DateTime dt2;
static string[] d;
private void button2_Click(object sender, EventArgs e)
{
d = textBox1.Text.Split('/');
dt1 = new DateTime(Convert.ToInt32(d[0]), Convert.ToInt32(d[1]), Convert.ToInt32(d[2]), new PersianCalendar());
d = textBox2.Text.Split('/');
dt2 = new DateTime(Convert.ToInt32(d[0]), Convert.ToInt32(d[1]), Convert.ToInt32(d[2]), new PersianCalendar());
if (dt1.CompareTo(dt2) < 0)
MessageBox.Show("dt1 < dt2");
else if (dt1.CompareTo(dt2) == 0)
MessageBox.Show("dt1 equals dt2");
else
MessageBox.Show("dt1 > dt2");
}

Yanehsar
جمعه 26 خرداد 1391, 18:00 عصر
اگر تاریخ ها به فرمت yyyy/mm/dd هست(روز و ماه دورقمی) میتونید از مقایسه رشته ها استفاده کنید
یا اینکه میتونید از کد زیر استفاده کنید
static DateTime dt1;
static DateTime dt2;
static string[] d;
private void button2_Click(object sender, EventArgs e)
{
d = textBox1.Text.Split('/');
dt1 = new DateTime(Convert.ToInt32(d[0]), Convert.ToInt32(d[1]), Convert.ToInt32(d[2]), new PersianCalendar());
d = textBox2.Text.Split('/');
dt2 = new DateTime(Convert.ToInt32(d[0]), Convert.ToInt32(d[1]), Convert.ToInt32(d[2]), new PersianCalendar());
if (dt1.CompareTo(dt2) < 0)
MessageBox.Show("dt1 < dt2");
else if (dt1.CompareTo(dt2) == 0)
MessageBox.Show("dt1 equals dt2");
else
MessageBox.Show("dt1 > dt2");
}

PersianCalendar() را چطوری باید اضافه کنیم؟جزء کدوم رفرنس هستش ؟

Yanehsar
جمعه 26 خرداد 1391, 19:09 عصر
اگر تاریخ ها به فرمت yyyy/mm/dd هست(روز و ماه دورقمی) میتونید از مقایسه رشته ها استفاده کنید
یا اینکه میتونید از کد زیر استفاده کنید
static DateTime dt1;
static DateTime dt2;
static string[] d;
private void button2_Click(object sender, EventArgs e)
{
d = textBox1.Text.Split('/');
dt1 = new DateTime(Convert.ToInt32(d[0]), Convert.ToInt32(d[1]), Convert.ToInt32(d[2]), new PersianCalendar());
d = textBox2.Text.Split('/');
dt2 = new DateTime(Convert.ToInt32(d[0]), Convert.ToInt32(d[1]), Convert.ToInt32(d[2]), new PersianCalendar());
if (dt1.CompareTo(dt2) < 0)
MessageBox.Show("dt1 < dt2");
else if (dt1.CompareTo(dt2) == 0)
MessageBox.Show("dt1 equals dt2");
else
MessageBox.Show("dt1 > dt2");
}

88301

علت خطا چیه؟

Yanehsar
شنبه 27 خرداد 1391, 00:24 صبح
کد کامل دیده نمیشه.
مطمئن شید که (تاریخ ورودی سه قسمت داشته باشه(دو تا / ) یا اینکه) آرایه datenew باید دارای طول 3 باشه.

این کدهای که من استفاده کردم


static DateTime dtvalid;
static DateTime dtnoskheh; static String[] datenew;
private void mtxtDatenoskheh_Validating(object sender, CancelEventArgs e)
{
datenew = mtxtValiddate.Text.Split('/');
dtvalid = new DateTime(Convert.ToInt32(datenew[0]), Convert.ToInt32(datenew[1]), Convert.ToInt32(datenew[2]), new PersianCalendar());
datenew = mtxtDatenoskheh.Text.Split('/');
dtnoskheh = new DateTime(Convert.ToInt32(datenew[0]), Convert.ToInt32(datenew[1]), Convert.ToInt32(datenew[2]), new PersianCalendar());
if (dtnoskheh.CompareTo(dtvalid) < 0)
MessageBox.Show("ok", "");
else if (dtnoskheh.CompareTo(dtvalid) == 0)
MessageBox.Show("no", "");
else
MessageBox.Show("dtnoskheh > dtvalid");

}