PDA

View Full Version : سوال: صحت تاريخ ورودي



Iran58
چهارشنبه 08 مهر 1388, 08:13 صبح
يك textboxداريم كه داخل آن تاريخ راواردمي كنيم(07/07/88)حال چگونه مي توانم جك كنم ماه ورودي بيشتراز12نباشدوعددورودي براي روزهم بيشتراز31نباشد؟

mahdi_7610
چهارشنبه 08 مهر 1388, 09:28 صبح
قبلا پاسخ داده شده

http://barnamenevis.org/forum/showthread.php?t=180822

Open-Source
چهارشنبه 08 مهر 1388, 09:28 صبح
من همیشه از تابع زیر برای این کار استفاده میکنم(البته بصورت yyyy/mm/dd یا yyyy/m/d):


//--------------------------------------------------------------- Check Persian Date
private bool CheckDate(string s)
{
bool blok = true;

if (s.Length < 8) blok = false;
if (s.Length > 10) blok = false;

/////////////////// yyyy/mm/dd
if (s.Length == 10)
{
if (s.Substring(4, 1) == "/" && s.Substring(7, 1) == "/")
{
string y = s.Substring(0, 4);
string m = s.Substring(5, 2);
string d = s.Substring(8, 2);

int iy;
int im;
int id;
if (int.TryParse(y, out iy) == false) blok = false;
if (int.TryParse(m, out im) == false) blok = false;
if (int.TryParse(d, out id) == false) blok = false;

if (blok == true)
{
if (im < 1 || im > 12) blok = false;
if (im >= 1 && im <= 6)
if (id < 1 || id > 31) blok = false;
if (im >= 7 && im <= 12)
if (id < 1 || id > 30) blok = false;
}
}
else
blok = false;
}
////////////////// yyyy/m/d
if (s.Length == 8)
{
if (s.Substring(4, 1) == "/" && s.Substring(6, 1) == "/")
{
string y = s.Substring(0, 4);
string m = s.Substring(5, 1);
string d = s.Substring(7, 1);

int iy;
int im;
int id;
if (int.TryParse(y, out iy) == false) blok = false;
if (int.TryParse(m, out im) == false) blok = false;
if (int.TryParse(d, out id) == false) blok = false;

if (blok == true)
{
if (im < 1 || im > 12) blok = false;
if (im >= 1 && im <= 6)
if (id < 1 || id > 31) blok = false;
if (im >= 7 && im <= 12)
if (id < 1 || id > 30) blok = false;
}
}
else
blok = false;
}
////////////////// yyyy/mm/d or yyyy/m/dd
if (s.Length == 9)
{
if (s.Substring(4, 1) == "/" && s.Substring(7, 1) == "/" || s.Substring(4, 1) == "/" && s.Substring(6, 1) == "/")
{
if (s.Substring(7, 1) == "/")
{
string y = s.Substring(0, 4);
string m = s.Substring(5, 2);
string d = s.Substring(8, 1);

int iy;
int im;
int id;
if (int.TryParse(y, out iy) == false) blok = false;
if (int.TryParse(m, out im) == false) blok = false;
if (int.TryParse(d, out id) == false) blok = false;

if (blok == true)
{
if (im < 1 || im > 12) blok = false;
if (im >= 1 && im <= 6)
if (id < 1 || id > 31) blok = false;
if (im >= 7 && im <= 12)
if (id < 1 || id > 30) blok = false;
}
}
else if (s.Substring(6, 1) == "/")
{
string y = s.Substring(0, 4);
string m = s.Substring(5, 1);
string d = s.Substring(7, 2);

int iy;
int im;
int id;
if (int.TryParse(y, out iy) == false) blok = false;
if (int.TryParse(m, out im) == false) blok = false;
if (int.TryParse(d, out id) == false) blok = false;

if (blok == true)
{
if (im < 1 || im > 12) blok = false;
if (im >= 1 && im <= 6)
if (id < 1 || id > 31) blok = false;
if (im >= 7 && im <= 12)
if (id < 1 || id > 30) blok = false;
}
}
else
blok = false;
}
else
blok = false;
}

return (blok);
}




این تابع مقدار تاریخ رو بصورت رشته ای میگیره و بعد T یا F بر میگردونه.

Parham.D
چهارشنبه 08 مهر 1388, 09:56 صبح
http://barnamenevis.org/forum/showthread.php?t=160232&highlight=Regular+Expression
http://barnamenevis.org/forum/showthread.php?t=148010&highlight=Regular+Expression
http://barnamenevis.org/forum/showthread.php?t=132547