Javid Bunyadzade
Javid Bunyadzade

Reputation: 145

DateTime ToString(“dd/MM/yyyy”) returns dd.MM.yyyy

I have also tried shielding the '/' symbol in the formatting string, but it didn't quite work. My final goal is to get the date with the '/' symbols as separators. I guess I can use DateTime.ToString(“dd/MM/yyyy”).Replace('.', '/'), but that feels a bit excessive.

Upvotes: 12

Views: 56539

Answers (3)

Jon
Jon

Reputation: 437494

The / character in date/time format strings stands for "whatever the date separator of the format provider is". Since you do not supply a format provider Thread.CurrentCulture is used, and in your case the current culture uses . as the date separator.

If you want to use a literal slash, place it inside single quotes:

dateTime.ToString("dd'/'MM'/'yyyy");

Alternatively, you could specify a format provider where the date separator is /:

dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

All of the above is documented on MSDN.

See the difference in a live example.

Upvotes: 43

Grant Thomas
Grant Thomas

Reputation: 45058

This is because of the way ToString works by default, in accordance with the current culture:

This method uses formatting information derived from the current culture.

So, override that:

string date = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)

Upvotes: 1

Brian P
Brian P

Reputation: 1587

string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)

Upvotes: 2

Related Questions