2013-04-19 1 views
0

Мне нужно подтвердить ввод пользователя на все даты культуры с использованием метода TryParse() или TryParseExact().Как проверить DateFormat конкретной культуры без части времени

DateTime.TryParse(args.Value, new CultureInfo("nl-NL", false), DateTimeStyles.None, out date)

Этот код Validate:

  • 01-10-2011
  • 1-10-2011
  • 01-10-2011 20:11
  • 01/10/2011 20:11

Но это необходимо для проверки только:

  • 01-10-2011
  • 1-10-2011

Вместе со всеми возможными форматами даты в пределах указанной культуры:

  • 1/10/2011
    1. октябрь 2011

И подтверждение они должны терпеть неудачу:

  • 01-10-2011 20:11
  • 01/10/2011 20:11

Любая идея?

Спасибо.

ответ

0
DateTime.ParseExact(dateString, "d/MM/yyyy", DateTimeFormatInfo.InvariantInfo); 

Где dateString - ваша дата.

+0

это не совсем то, что я ищу. Я хочу иметь возможность проверить ** все возможные даты ** в пределах некоторой культуры, например. '1.10.2011', '1-10-2011', '1/10/2011', '1. октябрь 2011 »и т. д. Ваше решение будет проверять только один шаблон. – mimo

0

это может помочь, вы можете предоставить дату и время (в виде или без времени) в виде строки и обернуть ее с помощью try catch для проверки.

Из MSDN - Convert.ToDateTime Method (String, IFormatProvider)

using System; 
using System.Globalization; 

public class Example 
{ 
    public static void Main() 
    { 
     Console.WriteLine("{0,-18}{1,-12}{2}\n", "Date String", "Culture", "Result"); 

     string[] cultureNames = { "en-US", "ru-RU","ja-JP" }; 
     string[] dateStrings = { "01/02/09", "2009/02/03", "01/2009/03", 
           "01/02/2009", "21/02/09", "01/22/09", 
           "01/02/23" }; 
     // Iterate each culture name in the array. 
     foreach (string cultureName in cultureNames) 
     { 
     CultureInfo culture = new CultureInfo(cultureName); 

     // Parse each date using the designated culture. 
     foreach (string dateStr in dateStrings) 
     { 
      DateTime dateTimeValue; 
      try { 
       dateTimeValue = Convert.ToDateTime(dateStr, culture); 
       // Display the date and time in a fixed format. 
       Console.WriteLine("{0,-18}{1,-12}{2:yyyy-MMM-dd}", 
            dateStr, cultureName, dateTimeValue); 
      } 
      catch (FormatException e) { 
       Console.WriteLine("{0,-18}{1,-12}{2}", 
            dateStr, cultureName, e.GetType().Name); 
      } 
     } 
     Console.WriteLine(); 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^