datetime.parse і змушує його працювати з певним форматом


141

У мене час повернення з файлу XML у форматі:

20080916 11:02

а саме

yyyymm hh: сс

Як я можу отримати функцію datetime.parse, щоб отримати це? Тобто проаналізуйте це, не помиляючись? Ура

Відповіді:


246
DateTime.ParseExact(input,"yyyyMMdd HH:mm",null);

припускаючи, що ви хотіли сказати, що хвилини слідують за годинами, а не секундами - ваш приклад трохи заплутаний.

Документація ParseExact детально описує інші перевантаження, якщо ви хочете, щоб синтаксичний аналіз автоматично перетворився на Universal Time або щось подібне.

Як згадує @ Joel Coehoorn , є також можливість використання TryParseExact , який поверне булеве значення, що вказує на успіх або невдачу операції - я все ще перебуваю на .Net 1.1, тому я часто забуваю про це.

Якщо вам потрібно розібрати інші формати, ви можете перевірити рядки формату Standard DateTime .


11
Не забувайте DateTime.TryParseExact ()
Joel Coehoorn

Також: у стандартного Xml є власний дуже специфічний формат DateTime, і інструменти .Net Xml повинні мати можливість його читати.
Joel Coehoorn

У цьому випадку він працює нормально з останнім параметром як нульовим, але для тих, хто знайде цей CultureInfo.InvariantCulture, інакше у вас можуть виникнути проблеми, якщо ваш час побачення щось подібний до "1823/01/01".
Тоділо

@JoelCoehoorn standard XML specific DateTime format?
Кікенет

10

Дякую за підказку, я використав це для розбору моєї дати "20071122", розібрав, мені потрібно було додати часовий стиль, я не використовував жодного, і він працював:

DateTime dt = DateTime.MinValue;

DateTime.TryParseExact("20071122", "yyyyMMdd", null,System.Globalization.DateTimeStyles.None, out dt);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.