如何验证检查日期时间输入是否符合 ISO 8601

How to validate check datetime input as ISO 8601

我尝试验证输入,然后我可以获得我想要的输入。

示例:

if (string != validate(string)) 
       then not valid
else 
       then valid

输入和预期输出

2017-03-17T09:44:18.000+07:00 == valid

2017-03-17 09:44:18 == not valid

您应该可以使用 DateTime.TryParseExact。这将 return true/false 基于它是否正确解析。您可以使用 format 参数指定要匹配的模式。

您可以使用正则表达式来匹配您想要的日期格式(查看 this example 您的正则表达式应该是什么样子,具体取决于您需要的格式)。

function Validate(string Input)
{
   System.Text.RegularExpressions.Regex MyRegex = new 
   System.Text.RegularExpressions.Regex("([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))");
   return MyRegex.Match(Input).Success // returns true or false
}

要检查 DateTime 是否有效,您需要正确的 DateTime 格式(即 "yyyy-MM-ddTHH:mm:ss.fffzzz")并使用 DateTime.TryParseExact() 来验证您的日期时间字符串,

尝试下面的代码来验证您的日期时间字符串,

 public void ValidateDateTimeString(string datetime)
 {
        DateTime result = new DateTime(); //If Parsing succeed, it will store date in result variable.
        if(DateTime.TryParseExact(datetime, "yyyy-MM-ddTHH:mm:ss.fffzzz", CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
            Console.WriteLine("Valid date String");
        else
            Console.WriteLine("Invalid date string");
 }

Try it online