c# - 无法更改以 "/"作为分隔符的日期格式,如果默认系统日期格式以 "-"作为日期分隔符

标签 c# asp.net date datetime

<分区>

在我的本地机器系统中,短日期设置的格式为“M/d/yyyy”。在我的 C# 代码中,我可以使用

将 DateTime 转换为“dd/MM/yyyy”或“dd-MM-yyyy”格式
//1
var date=string.Format("{0:dd/MM/yyyy}", DateTime.Now) //output is:05/09/2017
//2
var date=string.Format("{0:dd-MM-yyyy}", DateTime.Now) //output is:05-09-2017

但是,如果我将短日期的系统日期设置更改为“yyyy-MM-dd”或只是将“-”作为分隔符而不是“/”的任何日期格式,我将无法将日期转换为其他格式,例如

//3
var date=string.Format("{0:dd-MM-yyyy}", DateTime.Now) //output is:05-09-2017
//4
var date=string.Format("{0:dd/MM/yyyy}", DateTime.Now) //output is still :05-09-2017

在上面的代码中,即使我将分隔符更改为“/”,它仍然在输出中给出“-”。我如何将第 4 个输出到“05/09/2017”。

最佳答案

/ 字符是 DateTime 的特殊格式字符,表示“使用指定/当前语言环境的日期分隔符”。

如果你想强制它使用 / 你必须用单引号将它转义:

var date=string.Format("{0:dd'/'MM'/'yyyy}", DateTime.Now)

Alteratively, you can escape it with the \ character:

var date=string.Format("{0:dd\\/MM\\/yyyy}", DateTime.Now)

(但我发现第一种方法更具可读性。)

最后,你也可以使用双引号来转义它,但这样可读性更差:

var date = string.Format("{0:dd\"/\"MM\"/\"yyyy}", DateTime.Now);

或者(正如 Jon 指出的那样)您可以覆盖文化以使用使用 / 作为分隔符的文化:

var date = string.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", DateTime.Now);

关于c# - 无法更改以 "/"作为分隔符的日期格式,如果默认系统日期格式以 "-"作为日期分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46051886/

相关文章:

c# - 项目使用 Visual Studio 构建良好,但从命令行失败

java - 如何从日期中删除毫秒、秒、分钟和小时

r - 如何在 lubridate 中表示当月的第 15 天

c# - DLL 中的类

javascript - 将 MDL 与 ASP.NET Blazor 结合使用

c# - 将 Azure Key Vault key 传递给 Blazor 应用程序中的 Services.Configure

asp.net - 自动清理 HttpRequestValidationException 上的条目

c# - 如何在 ASP.NET 中使用插件架构?

c# - 如何调用外部javascript函数到ajax

java - 如何检查日期是否已设置为过去?