2013-08-05 2 views
-1

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

Date Format = MM/DD/YYYY 

с помощью следующего кода 13/10/2013 отображает сообщение об ошибке, но даже при вводе правильного формата, как 12/12/2013 отображается то же сообщение об ошибке и продолжает повторяться, и если Безразлично» t проверить правильность формата. return приостанавливает приложение.

if(!DateTime.TryParseExact(Date,"MM-dd-yyyy",new CultureInfo("en-US"),DateTimeStyles.None,out date)) 
{ 
    Console.WriteLine("Invalid date format!"); 
    while(!DateTime.TryParseExact(Date,"MM-dd-yyyy",new CultureInfo("en-US"),DateTimeStyles.None,out date)) 
    { 
     Console.WriteLine("Invalid Date Entered, please format MM-dd-yyyy"); 
     Date = Console.ReadLine(); 
    } 
} 

Строгий строитель и другие концепции не допускаются. Что делать?


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


public override bool IsValid(string value) 
{ 
    string format = "MM/dd/yyyy"; 
    DateTime dt; 

    if (DateTime.TryParseExact((String)value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) 
    { 
     return IsValid(dt); 
    } 
    else 
    { 
     return false; 
    } 
} 

Может вышеприведенный код будет изменен и слита с моим кодом, чтобы он работал?

+0

Вы задавали несколько раз вопрос, каждый раз, когда вы получили тот же ответ: Если вы хотите, чтобы разобрать дату, которая вводится как ' 08/05/2013', вы НЕ МОЖЕТЕ попытаться сопоставить его с строкой 'MM-dd-yyyy', потому что она имеет' -' вместо '/'. Поскольку вы ясно думаете, что ответ неадекватен, можете ли вы объяснить, что вы пытаетесь сделать? – jszigeti

ответ

1

изменить формат, как "MM/dd/yyyy"

, если вам нужно проверить формат даты с MM/dd/yyyy вы должны дать его в качестве строки формата в методе TryParseExact, curently у вас есть MM-dd-yyyy. поэтому вам нужно указать что-то вроде 01-01-2013

0

, если ваш формат MM/DD/YYYY, почему вы разобрали ММ-ДД-ГГГГ?

while(!DateTime.TryParseExact(Date,"MM/dd/yyyy",CultureInfo.InvariantCulture,DateTimeStyles.None,out date)) 
1

Этот следующий код будет работать:

  Console.WriteLine("Enter the Date Scheduled For the Meeting:"); 
      string Date = Console.ReadLine(); 
      DateTime Test; 
      if(DateTime.TryParseExact(Date, "MM/dd/yyyy", null, DateTimeStyles.None, out Test) == true) 
      { 
        Console.WriteLine("Date is in the correct Format"); 
      } 
      else 
      { 
        Console.Write("Date Not OK"); 
        return; 
      } 
Смежные вопросы