简体   繁体   中英

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.

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 .

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)

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM