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 g
This works (note the InvariantCulture):
DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)
If a CultureInfo
is not specified, the CurrentCulture
will be used. If this is a culture that doesn't use slashes as separators in dates it is replaced by whatever the actual culture date separator is.
string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
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)
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.