Когда вы используете ParseExact
, ваша строка и формат должны соответствовать точно .
Правильный формат: ddd, d MMM yyyy hh:mm:ss zzz
(или HH
, который зависит от вашего часового формата)
После того, как вы проанализируете его, вам нужно использовать ToString
, чтобы отформатировать его в формате yyyy-MM-dd'T'hh:mm:ss
(или HH
, в зависимости от того, что вы хотите 12-часовые часы или 24-часы формат)
Я думаю, мне нужно добавить немного больше объяснений, которые смущают многие люди (особенно новички в программировании).A DateTime
экземпляр не имеет какой-либо формат.Он просто имеет значения даты и времени, которые в основном являются числовыми значениями, называемыми Ticks
.Когда вы говорите о понятии «формат», это указывает на текстовое представление , которое string
.
Поскольку вы сказали "Mon, 11 Mar 2019 09:13:16 +0100
to 2019-03-11T09:13:16
", я (и, вероятно, также многие люди) предполагаю, что у вас есть строка как Mon, 11 Mar 2019 09:13:16 +0100
, и вы хотите получить 2019-03-11T09:13:16
как строкуот него.Для этого вам нужно сначала проанализировать вашу строку в DateTime.Для этого, как и вы, ParseExact
является одним из вариантов.
Когда вы анализируете его в DateTime
, вы получаете текстовое представление , что составляет string
, с ToString
метод.Этот метод имеет несколько перегрузок, и вы должны использовать ToString(String, IFormatProvider)
перегрузка .При этом вы указываете выходной формат в качестве первого параметра, а свою информацию о культуре - в качестве второго параметра, который может влиять на строку результата из-за спецификаторов формата :
и /
, так как они могутизменение в зависимости от текущей культуры или поставляемой культуры.
Дополнительная информация: Строки формата даты и времени