Как проверить правильность ввода даты и времени как ISO 8601 - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь подтвердить ввод, и затем я могу получить ввод, который я хочу.

Пример:

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

Ответы [ 3 ]

1 голос
/ 07 февраля 2020

Чтобы проверить действительный 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");
 }

Попробуйте онлайн

1 голос
/ 07 февраля 2020

Вы должны быть в состоянии использовать DateTime.TryParseExact . Это вернет true/false в зависимости от того, правильно ли он анализирует. Вы можете указать шаблон для сопоставления, используя параметр format.

0 голосов
/ 07 февраля 2020

Вы можете использовать регулярное выражение для соответствия желаемому формату даты (посмотрите в этом примере , как должен выглядеть ваш регулярный оператор, в зависимости от необходимого формата).

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
}
...