DateTime и CultureInfo

У меня это в моем коде:

var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

И когда мой нынешний культ голландский (nl-NL), а не 1 мая, я получаю 5 января.

Я думаю, что ошибка во втором параметре dd.MM.yyyy HH:mm:ss.

Есть ли способ исправить это, используя класс CultureInfo?

Ответы

Ответ 1

Вы можете попробовать следующее:

System.Globalization.CultureInfo cultureinfo =
        new System.Globalization.CultureInfo("nl-NL");
DateTime dt = DateTime.Parse(date, cultureinfo);

Ответ 2

Используйте класс CultureInfo, чтобы изменить информацию о культуре.

var dutchCultureInfo = CultureInfo.CreateSpecificCulture("nl-NL");
var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", dutchCultureInfo);

Ответ 3

InvariantCulture похож на en-US, поэтому я бы использовал вместо этого правильный CultureInfo:

var dutchCulture = CultureInfo.CreateSpecificCulture("nl-NL");
var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", dutchCulture);

Демо

А как насчет того, когда культура является en-us? Должен ли я кодировать каждый отдельный язык там?

Если вы хотите узнать, как отображать дату в другой культуре, например "en-us", вы можете использовать date1.ToString(CultureInfo.CreateSpecificCulture("en-US")).