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

匿名 (未验证) 提交于 2019-12-03 02:48:02

问题:

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.

See the difference in a live example.



回答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.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!