对于 CultureInfo
,调用 DateTimeFormat.AbbreviatedMonthNames
会返回一个数组,其中每个月都以 .
结束,例如 ['jan .',... 'dis.']
.
这不会发生在构建服务器上,也不会发生在所有开发人员机器上,只是一些。 CurrentCulture
和机器位置/语言的设置似乎没有关联。
选择这个的测试是针对西类牙文化的,包括为西类牙语显式创建 CultureInfo
。所以我会认为这些信息被硬编码在某个地方并且只是被读出,据我所知是这样。从 CultureData.AbbreviatedMonthNames(calendarId)
读取。
更新:
经过进一步调查,似乎如果启动时的当前文化是 en-GB
那么就没有句点。如果是 en-US
则有。显式设置 CurrentCulture
没有任何效果,只是在启动时有所不同。
最佳答案
您可以使用自己的 AbbreviatedMonthNames
集合,这样总会有相同的内容,如下所示:
CultureInfo ci = CultureInfo.CreateSpecificCulture("en-US");
DateTimeFormatInfo dtfi = ci.DateTimeFormat;
dtfi.AbbreviatedMonthNames = new string[] { "Jan.", "Feb.", "Mar.",
"Apr.", "May.", "Jun.",
"Jul.", "Aug.", "Sep.",
"Oct.", "Nov.", "Dec.", "" };
dtfi.AbbreviatedMonthGenitiveNames = dtfi.AbbreviatedMonthNames;
然后你可以像这样使用它:
Console.WriteLine(DateTime.Now.ToString("dd MMM yyyy", dtfi));
或者在当前线程中更改:
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
Console.WriteLine(DateTime.Now.ToString("dd MMM yyyy"));
关于c# - 文化 缩写的月份名称有时以句点结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43632983/