DateTime.TryParseExact не может проанализировать определенную дату на Windows 7, но работает на Windows 10 - PullRequest
2 голосов
/ 27 апреля 2020

Когда я запускаю приведенный ниже код, на Windows 10 он успешно анализирует дату и выдает «2012-03-14», тогда как на Windows 7 он не может проанализировать дату. Я протестировал оба. NET 4.0 и 4.6.1, и культура "gsw-FR" существует на обоих компьютерах. Почему это не работает правильно при запуске на Windows 7?

if (DateTime.TryParseExact("Mettwuch 14 März 2012", "dddd d MMMM yyyy", new CultureInfo("gsw-FR"), DateTimeStyles.None, out var dt))
    Console.WriteLine(dt.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
else
    Console.WriteLine("Parsing Error");

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

После вывода отформатированного шаблона даты для даты 2012-03-14 на Windows 7 и Windows 10 я заметил, что день недели (соответствующий коду формата "d ddd") был пишется по-разному

Console.WriteLine(new DateTime(2012, 3, 14).ToString("dddd d MMMM yyyy", new CultureInfo("gsw-FR")));

Windows 7 выходов: Mittwuch 14 марта 2012
Windows 10 выходов: Mettwuch 14 марта 2012

Аналогично, если вы форматируете ячейку в Microsoft Excel с значение даты 2012-03-14, используя NumberFormat "[$-10484]dddd d mmmm yyyy;@", форматирует дату следующим образом:

Excel 2007/2010 на Windows 7: Mittwuch 14 марта 2012
Excel 2013/2016 / 365 на Windows 7: Mettwuch 14 марта 2012
Excel 2007/2010/2013/2016/365 на Windows 10: Mettwuch 14 марта 2012

. NET не использует свою собственную локализацию данные на Windows, данные локализации являются частью операционной системы, поэтому тот же код формата даты отличается в этом примере. В этом случае Windows 7 и Windows 10 имеют разные данные локализации для написания того или иного дня недели с использованием языкового стандарта gsw-FR. Кроме того, похоже, что Excel имеет своеобразное поведение в том, что разные версии (2010 против 2013) Excel в Windows 7 выводят разные отформатированные значения и дополнительно одну и ту же версию Excel (2007 или 2010) в разных операционных системах (Windows 7 и Windows 10) вывод различных форматированных значений. Поэтому неясно, использует ли Excel свои собственные данные локализации или данные операционной системы.

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

Просто идея ... Вы используете CultureInfo en-us, но ваш первый аргумент "TryParseExact" не является английским sh ... И windows 10 более гибок в этом.

пожалуйста, попробуйте и дайте нам знать :) удачи в любом случае!

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