Почему этот синтаксический анализ не работает в C # .net 1.1? - PullRequest
1 голос
/ 23 октября 2009
private bool ValidDateCheck(){

 bool _isValid = true;
 try{
  DateTime.Parse("07/&*/2009");
  DateTime d = Convert.ToDateTime("07/&*/2009");
 }
 catch{
  _isValid = false;
 }
 return _isValid;
}

Как приведенный выше код не вызывает исключение?

Ответы [ 3 ]

5 голосов
/ 23 октября 2009

Это из .NET 1.1 документации :

Строка s анализируется с использованием форматирование информации в DateTimeFormatInfo, инициализированный для текущая культура.

Этот метод пытается разобрать s полностью и избегать бросков FormatException. игнорирует нераспознанные данные, если это возможно, и заполняет пропущенный месяц, день и год информация с текущим временем. Если s содержит только дату и время, этот метод предполагает 12 часов утра. любой ведущий, внутренний или замыкающий белый пробел в s игнорируется.

Параметр s должен содержать представление даты и времени в один из форматов, описанных в Тема DateTimeFormatInfo.

Я не могу проверить это, поскольку самая ранняя версия, которую я могу собрать в VS2008, это 2.0.

1 голос
/ 23 октября 2009

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

Если одинарные кавычки - просто опечатка, отредактируйте вопрос, и я еще раз посмотрю.

0 голосов
/ 23 октября 2009

использовать DateTime.TryParse ()

...