CultureInfo nB-NO DateTime.TryParse разница в VS2019 и dotnetfiddle.net - PullRequest
0 голосов
/ 25 апреля 2019

На моей машине, когда я запускаю и выдает следующее

string locale = "nb-NO";

CultureInfo culture = CultureInfo.CreateSpecificCulture(locale);

string shortDateFormatString = culture.DateTimeFormat.ShortDatePattern;
string shortTimeFormatString = culture.DateTimeFormat.ShortTimePattern;

Я получил следующий вывод

shortDateFormatString "dd.MM.yyyy"
ShortTimePattern "HH:mm"

Но на dotnetfiddle.net я получил следующее

shortDateFormatString "dd.MM.yyyy"
ShortTimePattern "HH.mm"

Я полагаю, C # использует CLDR, поэтому в соответствии с https://github.com/unicode-cldr/cldr-dates-full/blob/1af902b749bef761f07281f80241250053b4313d/main/nb/ca-gregorian.json#L323

Обе схемы короткого времени должны быть действительными. А на dotnetfiddle можно разобрать nb-NO datetime, выглядя следующим образом

06.12.2017 12:34
06.12.2017 12.34

Однако в VS2019 на моей машине можно только разобрать

06.12.2017 12:34

Как это возможно, это отличается? оба используют .NET 4.7.2.

Вы можете проверить мою скрипку здесь https://dotnetfiddle.net/68DDYz

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Как это возможно, это отличается?

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

0 голосов
/ 25 апреля 2019

Джон совершенно прав (дух!)

Настройки культуры сложны. Так как они хранятся в реестре Windows, они могут отличаться / изменять версии .NET Framework, версии операционной системы, обновления Windows, исправления и т. Д. Это означает, что даже если оба сервера используют одну и ту же версию .NET Framework, это не означает, что настройки каждой культуры будут одинаковыми для обоих.

Например, я могу показать вам культуру it-IT.

См .: .NET (3.5) форматирует время, используя точки вместо двоеточий в качестве TimeSeparator для ИТ-культуры?

Для .NET Framework 3.5 культура it-IT имеет . как TimeSeparator, но в версии .NET Framework 4.0 она изменилась на :, что указано в Википедии.

Эти изменения, конечно, не конец света, но это тоже не понравилось.

...