DateTime ToString,不使用genitive月份名称

时间:2016-03-04 11:54:11

标签: c# datetime

我希望输出DateTime这样的DateTime.Now.ToString("dd MMMM yyyy")但是当我设置像cs-CZ这样的文化时,我不想在此输出中使用属性月份名称。有可能对ToString()函数说明吗?

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

我想得到:

"14 březen 2016"

我需要这个,因为我必须将此DateTime解析为jquery datepicker且无法处理genitive名称。

1 个答案:

答案 0 :(得分:1)

奥基。我用.NET Team挖掘这个,然后我们得到了结果。

Tarek Mahmoud Sayed说;

  

这是 design 。在拥有“dd MMMM”“d MMMM”“MMMM dd”“MMMM d”时,我们会使用该名称。如果你想强行使用   您可以使用“ddd MMMM yyyy”的非通用名称。顺便说一下,这是一样的   调用GetDateFormatEx

时Windows的行为

您可以在CoreCLR上使用IsUseGenitiveForm方法检查哪些格式使用带有关系的月份名称。

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

他们也说;

  

这是设计原因,因为dddMMMM的组合   始终使用属性月份名称。使用ddd将生成星期几。如果有人真的想避免使用属性月份   名字,他们可以:

     
      
  • 覆盖用于格式化的DateTimeFormatInfo中的月份名称
  •   
  • 格式“dd”,然后将其与“MMMM yyyy”
  • 连接