Указание формата ввода даты - PullRequest
2 голосов
/ 04 августа 2009

У меня есть текстовое поле asp.net для ввода даты, я использую регулярное выражение, чтобы позволить пользователю вводить дату в формате дд-мм-гггг, но когда я конвертирую дату ввода в объект даты и времени, значения месяца и дня меняются местами. Как можно указать правильный способ интерпретации этой входной даты?

Ответы [ 5 ]

1 голос
/ 04 августа 2009

Я предлагаю использовать DateTime.TryParseExact () и указать формат даты.

1 голос
/ 04 августа 2009

Вы можете использовать DateTime.ParseExact

1 голос
/ 04 августа 2009

Вы можете сделать это, указав культуру, которая использует формат dd-mm-yyyy, например, Германия:

DateTime dateTime = DateTime.Parse("01-12-2009", CultureInfo.GetCultureInfo("de-DE"));
Console.WriteLine(dateTime.ToString("dd MMM yyyy"));

производит:

01 Dec 2009

Конечно, вы действительно хотите выполнить всю специфичную для вашей культуры обработку в культуре вашего пользователя. Итак, CultureInfo.GetCultureInfo("de-DE") должно быть CultureInfo.CurrentCulture.

И если ваш пользователь не привык видеть даты вроде dd-mm-yyyy, не используйте этот формат.

0 голосов
/ 04 августа 2009

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

0 голосов
/ 04 августа 2009

Я использовал DateTime.Parse () в прошлом.

Но, похоже, у вас проблемы с культурой, поэтому такой подход может быть лучше:

  // Parse a date and time with no styles.
  dateString = "03/01/2009 10:00 AM";
  culture = CultureInfo.CreateSpecificCulture("en-US");
  styles = DateTimeStyles.None;
  try
  {
     result = DateTime.Parse(dateString, culture, styles);
     outputBlock.Text += String.Format("{0} converted to {1} {2}.",
                       dateString, result, result.Kind.ToString()) + "\n";
  }
  catch (FormatException)
  {
     //Error
  }

Больше информации о MSDN: http://msdn.microsoft.com/en-us/library/ey1cdcx8(VS.96).aspx

Но вы также можете увеличить дату, если это будет работать лучше:

DateTime d = new DateTime(Y, M, D);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...