PDA

View Full Version : سوال: چک کردن تاریخ شمسی



amin3271
پنج شنبه 10 مرداد 1387, 13:10 عصر
تو برنامه ام می خوام اگه دکمه save زده شده چک کنه فیلد مربوط به تاریخ درست واردشده یا نه برای این کار چکار می تونم بکنم؟

Xcalivorse
پنج شنبه 10 مرداد 1387, 13:13 عصر
منظورتون فرمت تاریخ یا خود تاریخ ؟

amin3271
پنج شنبه 10 مرداد 1387, 13:31 عصر
یعنی تاریخ رو غلط تایپ نکرده باشه مثلا 54/15/1368 یا 31/12/5454

tthenry14plus
یک شنبه 13 مرداد 1387, 04:09 صبح
برای دریافت تاریخ از طرف کاربر بجای استفاده از TextBox، از MaskedTextBox استفاده کنید و پراپرتی Mask او رو برابر با Short date قرار دهید، حال ورود تاریخ باید مطابق با اصول باشد اما برای چک کردن درستی ارقام وارد شده کد زیر را برای دکمه Save بنویسید :


if (
int.Parse(maskedTextBox1.Text.Substring(0, 2)) > 31 ||
int.Parse(maskedTextBox1.Text.Substring(0, 2)) < 1 ||
int.Parse(maskedTextBox1.Text.Substring(3, 2)) > 12 ||
int.Parse(maskedTextBox1.Text.Substring(3, 2)) < 1 ||
int.Parse(maskedTextBox1.Text.Substring(6, 4)) > 2000 ||
int.Parse(maskedTextBox1.Text.Substring(6, 4)) < 1300
)
MessageBox.Show("خطا در ورود تاریخ ...");

linux
یک شنبه 13 مرداد 1387, 10:11 صبح
برای دریافت تاریخ از طرف کاربر بجای استفاده از TextBox، از MaskedTextBox استفاده کنید و پراپرتی Mask او رو برابر با Short date قرار دهید، حال ورود تاریخ باید مطابق با اصول باشد اما برای چک کردن درستی ارقام وارد شده کد زیر را برای دکمه Save بنویسید :


if (
int.Parse(maskedTextBox1.Text.Substring(0, 2)) > 31 ||
int.Parse(maskedTextBox1.Text.Substring(0, 2)) < 1 ||
int.Parse(maskedTextBox1.Text.Substring(3, 2)) > 12 ||
int.Parse(maskedTextBox1.Text.Substring(3, 2)) < 1 ||
int.Parse(maskedTextBox1.Text.Substring(6, 4)) > 2000 ||
int.Parse(maskedTextBox1.Text.Substring(6, 4)) < 1300
)
MessageBox.Show("خطا در ورود تاریخ ...");


با روش شما تاریخ های زیر مورد قبول هست
1376/12/31
1387/9/31
و ...

amin3271
یک شنبه 13 مرداد 1387, 12:27 عصر
روش درستش رو پیدا کردم برای دوستان هم گذاشتم تا استفاده کنند.


try
{
string[] sss = new string[3];
sss = mtxtTSokonat.Text.Split('/');
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
pc.ToDateTime(Convert.ToInt16(sss[0]), Convert.ToInt16(sss[1]), Convert.ToInt16(sss[2]), 0, 0, 0, 0);
MessageBox.Show("Date is current.");
}
catch
{
lbl1.Visible = true;
lbl1.ForeColor = Color.Red;
lbl1.Text = "Date is mistake.";
System.Media.SystemSounds.Beep.Play();
mtxtTSokonat.Focus();
mtxtTSokonat.SelectAll();
}

tthenry14plus
دوشنبه 14 مرداد 1387, 01:05 صبح
پیش خودم گفتم مسئله اون نیست، دیگه خودتون اون کارو انجام میدید ...
با اضافه کردن دوتا شرط دیگه مشکلش حل میشه :


if (
(int.Parse(maskedTextBox1.Text.Substring(3, 2))> 6 &&
int.Parse(maskedTextBox1.Text.Substring(0, 2)) > 30) ||
int.Parse(maskedTextBox1.Text.Substring(0, 2)) > 31 ||
int.Parse(maskedTextBox1.Text.Substring(0, 2)) < 1 ||
int.Parse(maskedTextBox1.Text.Substring(3, 2)) > 12 ||
int.Parse(maskedTextBox1.Text.Substring(3, 2)) < 1 ||
int.Parse(maskedTextBox1.Text.Substring(6, 4)) > 2000 ||
int.Parse(maskedTextBox1.Text.Substring(6, 4)) < 1300
)
MessageBox.Show("خطا در ورود تاریخ ...");