C# DateTime ToString(“;dd/MM/yyyy”;)返回dd.MM.yyyy

C# DateTime ToString(“;dd/MM/yyyy”;)返回dd.MM.yyyy,c#,asp.net,datetime,C#,Asp.net,Datetime,我也尝试过屏蔽格式化字符串中的“/”符号,但效果不太好。我的最终目标是用“/”符号作为分隔符来获取日期。我想我可以使用DateTime.ToString(“dd/MM/yyyy”).Replace(“.”,“/”),但这感觉有点过分。日期/时间格式字符串中的/字符代表“格式提供程序的日期分隔符是什么”。由于您不提供格式提供程序线程,因此使用了CurrentCulture,在您的情况下,当前区域性使用作为日期分隔符 如果要使用文字斜杠,请将其放在单引号内: dateTime.ToString("d

我也尝试过屏蔽格式化字符串中的“/”符号,但效果不太好。我的最终目标是用“/”符号作为分隔符来获取日期。我想我可以使用
DateTime.ToString(“dd/MM/yyyy”).Replace(“.”,“/”)
,但这感觉有点过分。

日期/时间格式字符串中的
/
字符代表“格式提供程序的日期分隔符是什么”。由于您不提供格式提供程序
线程,因此使用了CurrentCulture
,在您的情况下,当前区域性使用
作为日期分隔符

如果要使用文字斜杠,请将其放在单引号内:

dateTime.ToString("dd'/'MM'/'yyyy");
或者,您可以指定日期分隔符为
/
的格式提供程序:

dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
所有这些都是不可能的

这种方法有效(注意:

string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)

如果未指定
CultureInfo
,则将使用
CurrentCulture
。如果这是一个不使用斜杠作为日期分隔符的区域性,它将被实际的区域性日期分隔符所取代。

这是因为按照当前区域性的方式:

此方法使用从当前文件派生的格式信息 文化

因此,请忽略以下内容:

string date = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)

这是唯一一个真正回答问题“为什么”部分的答案(即“/”是特定于文化的分隔符)+1
string date = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)