我有一个简单的程序,将返回日和ShortDate。例如,如果输入是2016年3月27日,则输出为"Sun,03/27/ 2016“。
string ShortMonthFormat = "ddd";
DateTime dtc = Convert.ToDateTime("2016-03-27 12:26:41.210");
string result = dtc.ToString(string.Format("{0}, {1}", ShortMonthFormat, dtc.ToShortDateString()));
Console.WriteLine(result);
Console.ReadLine();此代码适用于当前的系统日期格式,即MM/dd/yyyy(03/27/2016)。但是,如果系统的日期格式更改为dd-MMM-yy(27-Mar-16),则代码将返回以下输出"Sun, 27-3ar-16"
三月(三月)作为"3ar"返回
8月(8月)成为"AuA.D."
为什么会发生这种情况?
发布于 2016-01-27 12:50:59
似乎您的代码中有一个bug。您正在尝试获取短日期格式,但不是获取格式,而是格式化日期,这将导致格式化日期而不是格式。您可以在代码中修复这个问题:
string format = string.Format(
"{0}, {1}",
ShortMonthFormat,
CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern
);
string result = dtc.ToString(format);您没有指定CultureInfo,因此使用了CultureInfo.CurrentCulture,这反映在CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern中。如果您想使用另一个CultureInfo,您还必须在dtc.ToString(format, cultureInfo)中使用它。
另一种解释修复的方法是,您必须用dtc.ToShortDateString()替换CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern。
https://stackoverflow.com/questions/35037659
复制相似问题