如何检查字符串值是否采用正确的时间格式?

Jul*_*les 7 c# string validation time

是否有可能检查字符串是否处于有效的时间格式?

Examples:
12:33:25 --> valid
03:04:05 --> valid
3:4:5    --> valid
25:60:60 --> invalid
Run Code Online (Sandbox Code Playgroud)

msm*_*cic 15

可以为字符串时间格式验证的目的编写附加方法.TimeSpan结构有一个TryParse方法,它会尝试解析一个字符串,TimeSpan并返回解析的结果(无论是否成功).

正常方法:

public bool IsValidTimeFormat(string input)
{
    TimeSpan dummyOutput;
    return TimeSpan.TryParse(input, out dummyOutput);
}
Run Code Online (Sandbox Code Playgroud)

扩展方法(必须在单独的非泛型静态类中):

public static class DateTimeExtensions
{
    public static bool IsValidTimeFormat(this string input)
    {
        TimeSpan dummyOutput;
        return TimeSpan.TryParse(input, out dummyOutput);
    }
}
Run Code Online (Sandbox Code Playgroud)

调用现有的方法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);
}
Run Code Online (Sandbox Code Playgroud)

扩展方法(必须在单独的非泛型静态类中):

public static class DateTimeExtensions
{
    public static bool IsValidTimeFormat(this string input)
    {
        return TimeSpan.TryParse(input, out var dummyOutput);
    }
}
Run Code Online (Sandbox Code Playgroud)