Я пытаюсь преобразовать отформатированное значение своей строки для датирования типа с форматом dd/MM/yyyy
.
this.Text="22/11/2009";
DateTime date = DateTime.Parse(this.Text);
Какова проблема? Это имеет второе переопределение, которое просит IFormatProvider
.Что это такое? Я должен передать это также? Если Да, как использовать его для этого случая?
Править
Между чем различия Parse
и ParseExact
?
Редактирование 2
Оба ответа Slaks и Sam работают на меня, в настоящее время пользователь дает вход, но это гарантирую я, что они допустимы при помощи maskTextbox.
Какой ответ лучше рассматривает все аспекты как тип saftey, производительность или что-то, чему Вы чувствуете себя подобно
Используйте DateTime.ParseExact
.
this.Text="22/11/2009";
DateTime date = DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);
Вам может потребоваться указать язык и региональные параметры для этого конкретного формата даты, как показано ниже:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); //dd/MM/yyyy
this.Text="22/11/2009";
DateTime date = DateTime.Parse(this.Text);
Дополнительные сведения см. Здесь:
Анализ строкового представления 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
, и если / почему это отличается от ожидаемого.
Используйте 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
, который будет использовать окружение, указанное пользователем в разделе «Региональные параметры» панели управления.
используйте это для преобразования строки в datetime:
Datetime DT = DateTime.ParseExact(STRDATE,"dd/MM/yyyy",System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat)
Вы также можете использовать
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