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

asp.net, c#, datetime

Solution

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.

Problem

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.

Original source