问题一:
用户输入日期格式(比如:yyyyMMdd,yyyy-MM-dd,yyyy-MM-dd HH:mm:ss等等)
我怎么验证这个格式是否正确?问题二:
用户输入具体的日期时间(比如:20100411,2010-04-11 14:39等等)
我怎么验证这个日期时间是否正确?这是两个相互独立的问题,两个没有关系!
求答案!
用户输入日期格式(比如:yyyyMMdd,yyyy-MM-dd,yyyy-MM-dd HH:mm:ss等等)
我怎么验证这个格式是否正确?问题二:
用户输入具体的日期时间(比如:20100411,2010-04-11 14:39等等)
我怎么验证这个日期时间是否正确?这是两个相互独立的问题,两个没有关系!
求答案!
/// 是否为日期型字符串
/// </summary>
/// <param name="StrSource">日期字符串(2008-05-08)</param>
/// <returns></returns>
public static bool IsDate(string StrSource)
{
return Regex.IsMatch(StrSource,@"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]" + @"|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|" + @"1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?" +@"2-(0?[1-9]|1\d|2[0-9]))|(((1[6-9]|[2-9]\d)(0[48]|[2468]" + @"[048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$");
} /// <summary>
/// 是否为时间型字符串
/// </summary>
/// <param name="source">时间字符串(15:00:00)</param>
/// <returns></returns>
public static bool IsTime(string StrSource)
{
return Regex.IsMatch(StrSource, @"^((20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d)$");
} /// <summary>
/// 是否为日期+时间型字符串
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static bool IsDateTime(string StrSource)
{
return Regex.IsMatch(StrSource, @"^(((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?" + @"[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?" + @"[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]" +@"|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-" + @"9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[" + @"2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23" +@"|[0-1]?\d):[0-5]?\d:[0-5]?\d)$ ");
}
//yyyyMMdd格式的
string DateString = textBox1.Text.Trim();
string YearString = DateString.Substring(0, 4);
string MonthString = DateString.Substring(4, 2);
string DayString = DateString.Substring(6, 2);
然后把他们转成数字,然后判断一下大小就是了。如果年是瑞年的话,还要考虑2月有29天。
(?:1[012]|[1-9]) 月
(?:[12]\d|3[10]|[1-9])日
自己组合吧
yyyyMMdd
这两个有统一的一个正则判断出吗?
yyyyMMdd
这两个和起来统一一个正则判断式怎么写?求高手!
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
{
MessageBox.Show(isDateTime("19980512").ToString());
MessageBox.Show(isDateTime("1998-05-12").ToString());
MessageBox.Show(isDateTime("1998-05-12 12:03:12").ToString());
}bool isDateTime(string str)
{
DateTime dt;
if (DateTime.TryParseExact(str, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out dt)) return true;
if (DateTime.TryParseExact(str, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out dt)) return true;
if (DateTime.TryParseExact(str, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out dt)) return true;
// 其它格式往后加吧
return false;
}
yyyyMMdd hh:mm:ss
yyyyMMdd
这两个和起来统一一个正则判断式怎么写?
string d = DateTime.Now.ToString("yyyyMMdd hh:mm:ss");
DateTime dt;
DateTime.TryParseExact(d, "yyyyMMdd hh:mm:ss", null, System.Globalization.DateTimeStyles.None, out dt);
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(isDateTime("19980512").ToString());
MessageBox.Show(isDateTime("1998-05-12").ToString());
MessageBox.Show(isDateTime("1998-05-12 12:03:12").ToString());
}bool isDateTime(string str)
{
DateTime dt;
if (DateTime.TryParse(str,out dt)) return true;
if (DateTime.TryParseExact(str, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out dt)) return true;
// 其它格式往后加吧
return false;
}
还是用正则吧
DateTime.TryParseExact(thisDate.Substring(0, 4), dateFrmate, System.Threading.Thread.CurrentThread.CurrentCulture, System.Globalization.DateTimeStyles.None, out tempDate)
yyyyMMdd
求这两个不规则的格式的正则表达式!