簡體   English   中英

如何檢查字符串值是否采用正確的時間格式?

[英]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結構有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 框架 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-有效時間?forum=aspgettingstarted

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM