Строка не была распознана как допустимый DateTime “формат dd/MM/yyyy”

Я пытаюсь преобразовать отформатированное значение своей строки для датирования типа с форматом dd/MM/yyyy.

this.Text="22/11/2009";

DateTime date = DateTime.Parse(this.Text);

Какова проблема? Это имеет второе переопределение, которое просит IFormatProvider.Что это такое? Я должен передать это также? Если Да, как использовать его для этого случая?

Править

Между чем различия Parse и ParseExact?

Редактирование 2

Оба ответа Slaks и Sam работают на меня, в настоящее время пользователь дает вход, но это гарантирую я, что они допустимы при помощи maskTextbox.

Какой ответ лучше рассматривает все аспекты как тип saftey, производительность или что-то, чему Вы чувствуете себя подобно

158
задан Shantanu Gupta 4 August 2014 в 01:15
поделиться

6 ответов

Используйте DateTime.ParseExact .

this.Text="22/11/2009";

DateTime date = DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);
233
ответ дан 23 November 2019 в 21:39
поделиться

Вам может потребоваться указать язык и региональные параметры для этого конкретного формата даты, как показано ниже:

    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); //dd/MM/yyyy

    this.Text="22/11/2009";

    DateTime date = DateTime.Parse(this.Text);

Дополнительные сведения см. Здесь:

http://msdn.microsoft.com/en-us/library/5hh873ya.aspx

10
ответ дан 23 November 2019 в 21:39
поделиться

Анализ строкового представления DateTime - сложная вещь, потому что разные культуры имеют разную дату форматы. .Net знает об этих форматах даты и извлекает их из вашего текущего языка и региональных параметров ( System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat ), когда вы вызываете DateTime.Parse (this.Text) ;

Например, строка «22/11/2009» не соответствует ShortDatePattern для США (en-US), но соответствует для Франции (fr-FR).

Теперь вы можете либо вызвать DateTime.ParseExact и передать точную строку формата, которую вы ожидаете, либо передать соответствующий язык и региональные параметры в DateTime.Parse , чтобы разобрать дату.

Например, это правильно проанализирует вашу дату:

DateTime.Parse( "22/11/2009", CultureInfo.CreateSpecificCulture("fr-FR") );

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

Что вам нужно выяснить, так это то, что установлено в System.Threading.Thread.CurrentThread.CurrentCulture , и если / почему это отличается от ожидаемого.

20
ответ дан 23 November 2019 в 21:39
поделиться

Используйте DateTime.ParseExact .

this.Text="22/11/2009";

DateTime date = DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);
-121--672127-

Начните с определения действий, которые вы называете действиями на своем веб-сайте. Действие может содержать несколько гиперссылок. Таким образом, многомерный массив php может помочь здесь, который может перейти в таблицу как сериализованный объект.

Скажем, что x теперь связан с y, z, a и b. можно определить y, z, a и b в качестве связей профиля. Скажем, х прокомментировал новое фото. В этом случае y станет новой гиперссылкой на фото профиля человека. Скажем, х стал поклонником группы зооу. В этом случае zoozoo становится гипер- ссылка к странице поклонника.

Создайте таблицу действий, чтобы масштабировать ее, чтобы сделать ее activity_USER_ID, каждый раз, когда пользователь регистрирует эту таблицу и проверяет, что вам не нужно создавать ее снова.

Определите действия, как в 1,2,3 или все, что вы считаете, это лучшее действие, которое люди могут быть заинтересованы в сообществах, которые вы поддерживаете.

Структура таблицы должна быть простой: массив activity php, метка времени. Если вы используете jQuery и Ajax для заполнения действия, как сделано в Facebook с помощью мыши прокрутки, то вы всегда можете преобразовать массив php в json и форматировать его на стороне клиента.

Это делается при каждом входе пользователя в систему.

Если пользовательская база велика, скажем, миллион, то вы, возможно, захотите поместить в какую-нибудь систему обработки заданий, которая поместит события в event_MM_DD_YYYY, а затем вы можете выполнить пакетную обработку этих событий, чтобы сохранить их в таблице действий.

Никогда не отображать более 10 20 30 последних действий.

Надеюсь, что это поможет вам:)

-121--4716400-

Необходимо вызвать ParseExact , который анализирует дату, точно соответствующую формату, который вы предоставляете.

Например:

DateTime date = DateTime.ParseExact(this.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);

Параметр IFormatProvider указывает культуру, используемую для анализа даты.
Если последовательность не поступает от пользователя, следует передать CultureInfo.InvariantCulture .
Если последовательность исходит от пользователя, следует передать CultureInfo.CurrentCulture , который будет использовать окружение, указанное пользователем в разделе «Региональные параметры» панели управления.

42
ответ дан 23 November 2019 в 21:39
поделиться

используйте это для преобразования строки в datetime:

Datetime DT = DateTime.ParseExact(STRDATE,"dd/MM/yyyy",System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat)
3
ответ дан 23 November 2019 в 21:39
поделиться

Вы также можете использовать

this.Text = "22112009";
DateTime newDateTime = new DateTime(Convert.ToInt32(this.Text.Substring(4, 4)), // Year
                                    Convert.ToInt32(this.Text.Substring(2,2)), // Month
                                    Convert.ToInt32(this.Text.Substring(0,2)));// Day
0
ответ дан 23 November 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: