如何检查字符串值的时间格式是否正确?
How to check if a string value is in a correct time format?
是否可以检查字符串是否采用有效的时间格式?
Examples:
12:33:25 --> valid
03:04:05 --> valid
3:4:5 --> valid
25:60:60 --> invalid
您可以为此使用 TimeSpan.Parse
or TimeSpan.TryParse
方法。
这些方法使用这种格式。
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
方括号([
和 ]
)之间的元素是可选的。
TimeSpan.Parse("12:33:25") // Parsing fine
TimeSpan.Parse("03:04:05") // Parsing fine
TimeSpan.Parse("3:4:5") // Parsing fine
TimeSpan.Parse("25:60:60") // Throws overflow exception.
可以编写其他方法来验证字符串时间格式。 TimeSpan
结构有 TryParse
方法,该方法将尝试将字符串解析为 TimeSpan
和 return 解析结果 (无论成功与否).
正常方法:
public bool IsValidTimeFormat(string input)
{
TimeSpan dummyOutput;
return TimeSpan.TryParse(input, out dummyOutput);
}
扩展方法(必须在单独的非泛型静态class中):
public static class DateTimeExtensions
{
public static bool IsValidTimeFormat(this string input)
{
TimeSpan dummyOutput;
return TimeSpan.TryParse(input, out dummyOutput);
}
}
调用现有 string input;
的方法(假设它已用某个值初始化).
正常方法:
var isValid = IsValidTimeFormat(input);
扩展方法:
var isValid = DateTimeExtensions.IsValidTimeFormat(input);
或
var isValid = input.IsValidTimeFormat();
更新:.NET Framework 4.7
自从 .NET Framework 4.7 发布以来,它可以写得更简洁一些,因为现在可以在方法调用中声明输出参数。方法调用与以前相同。
正常方法:
public bool IsValidTimeFormat(string input)
{
return TimeSpan.TryParse(input, out var dummyOutput);
}
扩展方法(必须在单独的非泛型静态class中):
public static class DateTimeExtensions
{
public static bool IsValidTimeFormat(this string input)
{
return TimeSpan.TryParse(input, out var dummyOutput);
}
}
如果不想写方法,可以随时查看是否转换成功。如果需要,您可以使用布尔值来显示它是否有效。
bool passed = false;
string s = String.Empty;
DateTime dt;
try{
s = input; //Whatever you are getting the time from
dt = Convert.ToDateTime(s);
s = dt.ToString("HH:mm"); //if you want 12 hour time ToString("hh:mm")
passed = true;
}
catch(Exception ex)
{
}
时间跨度是一段时间,不是一天中的有效时间。它接受“300”作为“300:00:00”,但它不需要。
这适合你
bool IsTime(string myValue) {
bool Succeed = true;
try {
DateTime temp = Convert.ToDateTime(myValue);
}
catch (Exception ex) {
Succeed = false;
}
return Succeed;
}
是否可以检查字符串是否采用有效的时间格式?
Examples:
12:33:25 --> valid
03:04:05 --> valid
3:4:5 --> valid
25:60:60 --> invalid
您可以为此使用 TimeSpan.Parse
or TimeSpan.TryParse
方法。
这些方法使用这种格式。
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
方括号([
和 ]
)之间的元素是可选的。
TimeSpan.Parse("12:33:25") // Parsing fine
TimeSpan.Parse("03:04:05") // Parsing fine
TimeSpan.Parse("3:4:5") // Parsing fine
TimeSpan.Parse("25:60:60") // Throws overflow exception.
可以编写其他方法来验证字符串时间格式。 TimeSpan
结构有 TryParse
方法,该方法将尝试将字符串解析为 TimeSpan
和 return 解析结果 (无论成功与否).
正常方法:
public bool IsValidTimeFormat(string input)
{
TimeSpan dummyOutput;
return TimeSpan.TryParse(input, out dummyOutput);
}
扩展方法(必须在单独的非泛型静态class中):
public static class DateTimeExtensions
{
public static bool IsValidTimeFormat(this string input)
{
TimeSpan dummyOutput;
return TimeSpan.TryParse(input, out dummyOutput);
}
}
调用现有 string input;
的方法(假设它已用某个值初始化).
正常方法:
var isValid = IsValidTimeFormat(input);
扩展方法:
var isValid = DateTimeExtensions.IsValidTimeFormat(input);
或
var isValid = input.IsValidTimeFormat();
更新:.NET Framework 4.7
自从 .NET Framework 4.7 发布以来,它可以写得更简洁一些,因为现在可以在方法调用中声明输出参数。方法调用与以前相同。
正常方法:
public bool IsValidTimeFormat(string input)
{
return TimeSpan.TryParse(input, out var dummyOutput);
}
扩展方法(必须在单独的非泛型静态class中):
public static class DateTimeExtensions
{
public static bool IsValidTimeFormat(this string input)
{
return TimeSpan.TryParse(input, out var dummyOutput);
}
}
如果不想写方法,可以随时查看是否转换成功。如果需要,您可以使用布尔值来显示它是否有效。
bool passed = false;
string s = String.Empty;
DateTime dt;
try{
s = input; //Whatever you are getting the time from
dt = Convert.ToDateTime(s);
s = dt.ToString("HH:mm"); //if you want 12 hour time ToString("hh:mm")
passed = true;
}
catch(Exception ex)
{
}
时间跨度是一段时间,不是一天中的有效时间。它接受“300”作为“300:00:00”,但它不需要。
这适合你
bool IsTime(string myValue) {
bool Succeed = true;
try {
DateTime temp = Convert.ToDateTime(myValue);
}
catch (Exception ex) {
Succeed = false;
}
return Succeed;
}