DateTime.ParseExact будние дни как текстовые исключения FormatException - PullRequest
1 голос
/ 30 апреля 2020

Почему последняя строка, использующая DateTime.ParseExact, генерирует исключение FormatException, объясняющее, что предоставленная строка (datetimeAsString) недопустима, потому что день недели неисправен?

var format = "yyyy/M/ddd";
var provider = new CultureInfo("en-GB"); // Have tried with several other cultures including Invariant
var datetime = new DateTime(4444, 3, 2, 1, 5, 6, 777);
var datetimeAsString = datetime.ToString(format, provider);

// Here datetimeAsString == "4444/3/Wed"
var x = DateTime.ParseExact(datetimeAsString, format, provider);

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Возможно, вам нужно установить формат на

var format = "yyyy/M/dd";

Тогда нет исключений. Здесь «dd» обозначает номер дня, а «ddd» - день недели.

0 голосов
/ 30 апреля 2020

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

Если вы добавите день месяца, чтобы сделать его однозначным, он проанализирует:

var format = "yyyy/M/ddd/dd";
var provider = new CultureInfo("en-GB"); // Have tried with several other cultures including Invariant
var datetime = new DateTime(4444, 3, 2, 1, 5, 6, 777);
var datetimeAsString = datetime.ToString(format, provider);

// Here datetimeAsString == "4444/3/Wed/02"
var x = DateTime.ParseExact(datetimeAsString, format, provider);

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...