2008-10-24 3 views

ответ

12

Использование DateTime.ParseExact:

string str = "24/10/2008"; 
DateTime dt = DateTime.ParseExact(str, "dd/MM/yyyy", 
            Thread.CurrentThread.CurrentCulture); 

(Вы должны учитывать, что культура вы на самом деле хотите, чтобы разобрать его, по общему признанию.)

EDIT: Другие ответы указано «нулевой» в качестве третьего параметра - это эквивалентно использованию Thread.CurrentThread.CurrentCulture.

Для других форматов см. "Custom Date and Time Format Strings" в MSDN.

0

Try что-то вроде

DateTime date = System.DateTime.ParseExact(str, "dd/MM/yyyy", null); 

Для времени это может работать

DateTime date = System.DateTime.ParseExact(str, "HH:mm:ss", null); 
0
string str = "24/10/2008"; 
DateTime dt = Convert.ToDateTime(str); 
4

Если вы не знаете, формат, использование:

DateTime d = DateTime.Parse(dateString); 

Это пытается проанализируйте строковое представление даты и времени, используя правила матирования текущей культуры (например, Английский (США) «en-US», немецкий «de-DE», ...). Он пытается игнорировать непризнанные данные и заполняет отсутствующие значения за год, месяц и день с текущей датой (если синтаксический анализ только строки, содержащей время, например).

Если вы знаете, что используемая культура строки отличается от текущей, вы можете указать культуру использовать:

CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US"); 
DateTime d = DateTime.Parse(dateString, culture); 

Вы должны ВСЕГДА suround преобразования с помощью примерки поймать блок, так как строка должна соответствовать признанному шаблону. В качестве альтернативы вы также можете проверить правильность строки с помощью метода DateTime.TryParse(dateString, out dateTime), который возвращает true при успешном завершении, а результат - в dateTime; или false в противном случае.

Если вы знаете точный формат, вы можете использовать

DateTime d = DateTime.ParseExact(dateString, "dd/MM/yyyy", null); 

(См Custom Date and Time Format Strings с сайта MSDN для других строк формата).

3

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

Я также вторая рекомендация Джона Скита использовать DateTime.ParseExact если вы сделать знают точно какой формат дата будет каждый раз.

+1

Существует также .TryParseExact(), чтобы получить лучшее из обоих миров. – 2008-10-24 14:44:45

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