TryParseExact "ггггМдччммсс"

У меня есть дата 201944102446, которую я пытаюсь DateTime.TryParseExact. Обратите внимание, что здесь нет начальных нулей для даты и месяца.

Я пробовал следующее.

DateTime.TryParseExact("201944102446", "yyyyMdhhmmss", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDateTime);

Это неправильно анализирует строку DateTime (дает мне DateTime.MinValue). Может ли кто-нибудь пролить свет на то, что я могу делать неправильно?

Как вы ожидаете, что функция покажет разницу между 11 января и 1 ноября?

John Wu 02.05.2019 02:42

Если вы можете разделить части даты (и строку формата) пробелом, он проанализирует ее.

Jimi 02.05.2019 02:51

Я не думаю, что это возможно, я имею в виду, что вы можете лишить yyyy и hhmmss. но даже тогда, если у вас осталось 3 цифры, невозможно узнать, что это такое, короче говоря, кто-то принял очень плохое дизайнерское решение.

TheGeneral 02.05.2019 02:52

Другие похожие сообщения: stackoverflow.com/q/26773534/447156, stackoverflow.com/q/35229843/447156 и stackoverflow.com/q/26773534/447156.

Soner Gönül 02.05.2019 07:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование ParseExact с необязательными ведущими нулями может быть неоднозначным, если между компонентами нет разделителей. Что будет представлять 2019111000000?. 11 января или 1 ноября?

I думать, если синтаксический анализатор встречает код с необязательным начальным нулем и видит более одной цифры в значении, он пытается выполнить синтаксический анализ, как если бы число было двухзначным.

Таким образом, он анализирует 2019 как год, а затем пытается анализировать 44 как месяц, что терпит неудачу. Это недостаточно «умно», чтобы знать, что 44 не может представлять действительный месяц, и делать вывод, что это должен представляет месяц с одной цифрой.

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

Другие вопросы по теме