是否有可能检查字符串是否处于有效时间格式?如何检查字符串值是否处于正确的时间格式?
Examples:
12:33:25 --> valid
03:04:05 --> valid
3:4:5 --> valid
25:60:60 --> invalid
是否有可能检查字符串是否处于有效时间格式?如何检查字符串值是否处于正确的时间格式?
Examples:
12:33:25 --> valid
03:04:05 --> valid
3:4:5 --> valid
25:60:60 --> invalid
可以为字符串时间格式验证的目的编写附加方法。 TimeSpan
结构已获得TryParse
方法,该方法将尝试将字符串解析为TimeSpan
并返回解析结果(是否成功)。
普通方法:
public bool IsValidTimeFormat(string input)
{
TimeSpan dummyOutput;
return TimeSpan.TryParse(input, out dummyOutput);
}
扩展方法(必须在单独的非泛型静态类):
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();
UPDATE:.NET框架4.7
由于.NET框架4.7的发布,它可以写成一点点清洁,因为输出参数现在可以在方法调用中声明。方法调用与以前一样。
普通方法:
public bool IsValidTimeFormat(string input)
{
return TimeSpan.TryParse(input, out var dummyOutput);
}
扩展方法(必须在单独的非泛型静态类):
public static class DateTimeExtensions
{
public static bool IsValidTimeFormat(this string input)
{
return TimeSpan.TryParse(input, out var dummyOutput);
}
}
您可以使用TimeSpan.Parse
或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.
如果你不想写的方法,您可以随时检查并看看是否成功转换。如果需要,您可以使用布尔值来显示它是否有效。
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)
{
}
在csharp中是否有任何日期时间模块? –
http://stackoverflow.com/questions/4710501/how-to-perform-c-sharp-time-validation-in-hhmmss-format – Partha