Заполнение объекта DateTime этой строкой 03-06-2012 08:00 am
Как заполнить объект C# DateTime из этой строки "03-06-2012 08:00 am".
Я пытаюсь какой-то код следующего типа:
DateTime lectureTime = DateTime.Parse("03-06-2012 08:00 am");
Я использую этот плагин http://trentrichardson.com/examples/timepicker/ на основе jQuery для генерации даты и времени.
Обновить --
Так много ответов ниже и много вещей, чтобы прояснить основы для этой небольшой проблемы. Из приведенного ниже снимка вы можете увидеть, что я пробовал и что я получил во время отладки в Visual Studio.
3 ответа
Вам нужно использовать DateTime.ParseExact. Что-то вроде
DateTime lectureTime = DateTime.ParseExact("03-06-2012 08:00 am", "dd-MM-yyyy hh:mm tt", CultureInfo.InvariantCulture);
string lectureTime = "03-06-2012 08:00 am";
DateTime time = DateTime.ParseExact(lectureTime , "dd-MM-yyyy hh:mm tt", CultureInfo.InvariantCulture);
- дд: дни [00-31]
- ММ: месяцы [00-12]
- гггг: годы [0000-9999]
- '-': они разделены тире
- чч: часы [00-12]
- мм: минуты [00-60]
- tt: время [am, pm] (без учета регистра)
Если у вас правильная культура, ваш код работает без изменений. Но вы можете использовать форматирование даты, отличное от программы, которая сгенерировала строку.
Я бы рекомендовал всегда указывать CultureInfo
когда:
- Разбор
DateTime
генерируется другой системой. - Вывод
DateTime
это будет проанализировано другой системой (не только показанной вашему пользователю).
Попробуй это:
CultureInfo cultureInfo = new CultureInfo("en-GB"); // Or something else?
DateTime lectureTime = DateTime.Parse("03-06-2012 08:00 am", cultureInfo);
Посмотрите, как работает онлайн: ideone
Разница между DateTime.Parse
а также DateTime.ParseExact
Если вы хотите, чтобы.NET приложил все усилия для разбора строки, используйте DateTime.Parse
, Он может обрабатывать широкий спектр распространенных форматов.
Если вы заранее точно знаете, как должны быть отформатированы даты, и хотите отклонить все, что отличается от этого формата (даже если оно может быть проанализировано правильно и без неоднозначности), используйте DateTime.ParseExact
,