Невозможно разобрать сокращенное название дня из строки - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь проанализировать дату в моей строке, используя DateTime.TryParseExact. Строка выглядит так:

Wed, 21 Apr 2019 07:28:45 GMT

Однако функция синтаксического анализа всегда дает сбой, когда я использую спецификатор формата ddd . Если я удаляю 'Wed' из строки, а часть 'ddd' из строки формата, он просто анализируется.

Вот немного кода, который воспроизводит проблему

var ci = CultureInfo.CreateSpecificCulture("en-GB");
var datesToParse = new[] { "Wed, 21 Apr 2019 07:28:45 GMT", "21 Apr 2019 07:28:45 GMT" };
var formats = new[] { "ddd, dd MMM yyyy HH:mm:ss 'GMT'", "dd MMM yyyy HH:mm:ss 'GMT'" };

foreach (var dateToParse in datesToParse)
{
    var result = DateTime.TryParseExact(dateToParse, formats, ci, DateTimeStyles.AllowWhiteSpaces, out DateTime parsedDate)
        ? parsedDate.ToLongDateString()
        : $"Unable to parse date: {dateToParse}";

    Console.WriteLine(result);
}

Console.ReadLine();

И вывод:

Unable to parse date: Wed, 21 Apr 2019 07:28:45 GMT
21 April 2019

Я не совсем уверен, что я здесь делаю неправильно. Любая помощь будет оценена.

edit: улучшен вывод и программный синтаксис

1 Ответ

3 голосов
/ 25 мая 2019

Ваша проблема в том, что 21 апреля 2019 года было воскресенье, а не среда. Это прекрасно работает "Sun, 21 Apr 2019 07:28:45 GMT"

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