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

Posted

技术标签:

【中文标题】DateTime ToString(“dd/MM/yyyy”) 返回 dd.MM.yyyy【英文标题】:DateTime ToString(“dd/MM/yyyy”) returns dd.MM.yyyy 【发布时间】:2013-02-22 18:30:04 【问题描述】:

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

【问题讨论】:

【参考方案1】:

日期/时间格式字符串中的/ 字符代表“格式提供程序的日期分隔符是什么”。由于您没有提供格式提供程序 Thread.CurrentCulture 被使用,并且在您的情况下,当前文化使用 . 作为日期分隔符。

如果您想使用 文字 斜线,请将其放在单引号内:

dateTime.ToString("dd'/'MM'/'yyyy");

或者,您可以指定日期分隔符为 / 的格式提供程序:

dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

以上都是documented on MSDN。

See the difference in a live example.

【讨论】:

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

【讨论】:

【参考方案3】:

这是因为ToString works by default的方式,按照现在的文化:

此方法使用来自当前的格式信息 文化。

所以,覆盖它:

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

【讨论】:

【参考方案4】:

这行得通(注意InvariantCulture):

DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)

如果未指定 CultureInfo,则将使用 CurrentCulture。如果这是一种不使用斜杠作为日期分隔符的区域性,则将其替换为实际区域性日期分隔符。

【讨论】:

以上是关于DateTime ToString(“dd/MM/yyyy”) 返回 dd.MM.yyyy的主要内容,如果未能解决你的问题,请参考以下文章

将yyyyMMdd,dd/MM/yyyy 类型字符串转换为datetime 类型 yyyy-MM-dd C#

c#日期时间格式

DateTime 字符串格式 (dd.MM) 本地化 XAML

在SQL中将dd / mm / yyyy VARCHAR转换为yyyy-dd-mm DATETIME

Web API - 如何在控制器中接收 DateTime ('dd/MM/yyyy') 作为 Url 参数?

将字符串dd / mm / yy转换为datetime