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

时间:2015-07-04 09:44:04

标签: c# string validation time

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

Examples:
12:33:25 --> valid
03:04:05 --> valid
3:4:5    --> valid
25:60:60 --> invalid

4 个答案:

答案 0 :(得分:13)

可以为字符串时间格式验证编写其他方法。 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();

更新:.NET Framework 4.7

自.NET Framework 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);
    }
}

答案 1 :(得分:3)

您可以使用TimeSpan.ParseTimeSpan.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.

答案 2 :(得分:1)

如果您不想编写方法,可以随时检查并查看转换是否成功。如果需要,您可以使用bool来显示它是否有效。

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)
{

}

答案 3 :(得分:0)

时间跨度是一段时间,不是一天中的有效时间。它接受“ 300”为“ 300:00:00”,但这不是必需的。

这对您有用

bool IsTime(string myValue) {

    bool Succeed = true;

    try {
        DateTime temp = Convert.ToDateTime(myValue);
    }
    catch (Exception ex) {
        Succeed = false;
    }

    return Succeed;
}