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

本文关键字:时间 格式 是否 字符串 何检查 检查 | 更新日期: 2023-09-27 18:00:57

是否可以检查字符串是否为有效的时间格式?

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();


更新:。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);
    }
}

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

如果您不想编写方法,您可以随时检查转换是否成功。如果需要,您可以使用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)
{
}

时间跨度是一段时间,而不是一天中的有效时间。它接受"300"作为"300:00:00",但不需要。

这对你有效

bool IsTime(string myValue) {
    bool Succeed = true;
    try {
        DateTime temp = Convert.ToDateTime(myValue);
    }
    catch (Exception ex) {
        Succeed = false;
    }
    return Succeed;
}

我如何使用TryParseExact 解决它

//要求用户提供时间

Console.WriteLine("Please enter a time in the format HH:MM");
string timeInput = Console.ReadLine();

//指示您想要的时间格式

  string timeFormat = "HH:mm";
  CultureInfo culture = new CultureInfo("jp-JP");

//检查是否与匹配

  if(DateTime.TryParseExact(timeInput, timeFormat, culture, 
  DateTimeStyles.None, out DateTime result) == true)
  {
   Console.WriteLine("You got it");
   };

查看此帖子了解更多详细信息https://social.msdn.microsoft.com/Forums/en-US/a72bb508-e35e-4632-b74a-efb6df04c4ab/c-check-if-time-from-textbox-is-a-valid-time?forum=aspgettingstarted