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.
问题:
回答1:
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.
回答2:
string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
回答3:
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)
回答4:
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.