2016-03-04 56 views
1

我想输出DateTime像这样DateTime.Now.ToString("dd MMMM yyyy")但是,当我设置一个像cs-CZ这样的文化时,我不想在此输出中使用所属格式的月份名称。有没有可能对ToString()功能说?DateTime ToString不使用所有格的月份名称

DateTime.Now.ToString("dd MMMM yyyy") \\ returns "14 března 2016" 

而且我想获得:

"14 březen 2016" 

我需要这个,因为我要解析此DateTime到jQuery的日期选择器,并且不能处理所有格名称。

+1

串连它可以你举例说明输出会令人满意吗? –

+0

你需要本地化语言的月份名称? – Kira

+0

@Anand是的,我把它定位了,但我不需要所有格。 – BvdVen

回答

1

Okey。我使用.NET Team对此进行了深入研究,并在这里得到了我们所得到的结果。

Tarek Mahmoud Sayed说;

这是由设计。当有“dd MMMM”,“d MMMM”,“MMMM dd”, “MMMM d”我们使用属性名称。如果您想强制使用 非属性名称,则可以使用“ddd MMMM yyyy”。顺便说一句,这是相同的Windows 行为也呼吁GetDateFormatEx

时,您可以检查哪些格式上CoreCLR使用所有格月份名称与IsUseGenitiveForm方法。

https://github.com/dotnet/coreclr/blob/67a86c9e114593ce1d24ef7b8a943b86438c0e46/src/mscorlib/src/System/Globalization/DateTimeFormat.cs#L372

另外他们说,

它是由设计,因为dddMMMM 总是组合使用所有格月份名称。使用ddd将产生星期几。如果有人真的想避免使用所有格月份 的名字,他们可以:

  • 覆盖用于格式化
  • 格式“dd”,然后在DateTimeFormatInfo月份名称与“MMMM yyyy”
+0

我找到了一个,但是我必须在每次需要在整个项目中使用这个或所有属性名称时才设置它.... – BvdVen