У меня есть дата 201944102446, которую я пытаюсь DateTime.TryParseExact.
Обратите внимание, что здесь нет начальных нулей для даты и месяца.
Я пробовал следующее.
DateTime.TryParseExact("201944102446", "yyyyMdhhmmss", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDateTime);
Это неправильно анализирует строку DateTime (дает мне DateTime.MinValue). Может ли кто-нибудь пролить свет на то, что я могу делать неправильно?
Если вы можете разделить части даты (и строку формата) пробелом, он проанализирует ее.
Я не думаю, что это возможно, я имею в виду, что вы можете лишить yyyy и hhmmss. но даже тогда, если у вас осталось 3 цифры, невозможно узнать, что это такое, короче говоря, кто-то принял очень плохое дизайнерское решение.
Другие похожие сообщения: stackoverflow.com/q/26773534/447156, stackoverflow.com/q/35229843/447156 и stackoverflow.com/q/26773534/447156.





Использование ParseExact с необязательными ведущими нулями может быть неоднозначным, если между компонентами нет разделителей. Что будет представлять 2019111000000?. 11 января или 1 ноября?
I думать, если синтаксический анализатор встречает код с необязательным начальным нулем и видит более одной цифры в значении, он пытается выполнить синтаксический анализ, как если бы число было двухзначным.
Таким образом, он анализирует 2019 как год, а затем пытается анализировать 44 как месяц, что терпит неудачу. Это недостаточно «умно», чтобы знать, что 44 не может представлять действительный месяц, и делать вывод, что это должен представляет месяц с одной цифрой.
Вы можете выполнить некоторую обработку самостоятельно, например, снять год и время, которые являются известной шириной, и выяснить, являются ли месяц или день (или оба) двумя цифрами, но у вас все еще есть возможность двусмысленности с примером, который я привожу. над. Если есть какой-либо другой контекст для ваших данных (например, в каком-то порядке), вы можете сделать обоснованное предположение о месяце и дне, но встроенный синтаксический анализатор не такой сложный.
Как вы ожидаете, что функция покажет разницу между 11 января и 1 ноября?