petko_stankoski
petko_stankoski

Reputation: 10713

DateTime and CultureInfo

I have this in my code:

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

And when my current cultur is dutch (nl-NL) instead of May 1st I get January 5th.

I think the error is in the second parameter dd.MM.yyyy HH:mm:ss.

Is there a way to fix this using the CultureInfo class?

Upvotes: 32

Views: 181554

Answers (4)

rajalaxmi behera
rajalaxmi behera

Reputation: 1

Try it..It will work

string text="15/03/2021";

DateTime.ParseExact(text, "dd/M/yyyy", CultureInfo.InvariantCulture);

Upvotes: 0

MMK
MMK

Reputation: 3721

You may try the following:

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

Upvotes: 51

Tim Schmelter
Tim Schmelter

Reputation: 460098

InvariantCulture is similar to en-US, so i would use the correct CultureInfo instead:

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

Demo

And what about when the culture is en-us? Will I have to code for every single language there is out there?

If you want to know how to display the date in another culture like "en-us", you can use date1.ToString(CultureInfo.CreateSpecificCulture("en-US")).

Upvotes: 1

Soner Gönül
Soner Gönül

Reputation: 98750

Use CultureInfo class to change your culture info.

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

Upvotes: 6

Related Questions