DateTime formatting in C#
I use a custom format to show DateTime to user: "dd/MM/yyyy".
var nowString = now.ToString("dd/MM/yyy");
The reason, I use the custom formatting, is to be not depended on user regional settings.
So, no matter what user's locale is, I expect the same format for a date.
But today I found that it does not work as I expect. On one of the target machines I got "28.02.2011" instead of expected "28/02/2011".
Why slash (/) is replaced by dot (.)? Is format string not enough explicit.
I got the answer on MSDN (RTFM!): The slash (/) is not a literal, but a pattern for the default date separator defined in DateTimeFormatInfo.DateSeparator. It has to be escaped (leading with back slash (\)), for being reproduced literally.
I fix my format string to be @"dd\/MM\/yyyy"
var nowString = now.ToString(@"dd\/MM\/yyy");
Now it works!