我想将 DateTime 格式化为包含月份名称缩写和日期的字符串,以便在图表中的轴标签中使用。
默认的 DateTime 格式字符串不包含缩写月份。我想没有标准,但我可以取月份名称的前 3 个字符的子字符串并将其替换为 MonthDay 格式。我使用 MonthDay 的原因是月份和日期的顺序取决于语言环境。
有没有人有更好的主意?
http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#MonthDay
我想将 DateTime 格式化为包含月份名称缩写和日期的字符串,以便在图表中的轴标签中使用。
默认的 DateTime 格式字符串不包含缩写月份。我想没有标准,但我可以取月份名称的前 3 个字符的子字符串并将其替换为 MonthDay 格式。我使用 MonthDay 的原因是月份和日期的顺序取决于语言环境。
有没有人有更好的主意?
http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#MonthDay
您可以采用该MonthDay
模式并将“MMMM”替换为“MMM” - 然后应用该模式:
string pattern = CultureInfo.CurrentCulture.DateTimeFormat.MonthDayPattern;
pattern = pattern.Replace("MMMM", "MMM");
string formatted = dateTime.ToString(pattern);
这有点粗糙,但我相信它会起作用。
您可以使用自定义字符串格式化程序来执行此操作:
DateTime now = DateTime.Now;
Console.WriteLine("{0}", now.ToString("ddd MMMM dd"));
有关更多信息,请参阅您链接到的页面上的“标准格式字符串如何工作”部分。
您可以在 Date.ToString() 方法中传递 CultureInfo。要么你有一个特定的文化信息,要么你可以使用 CultureInfo.CurrentCulture:
var date = DateTime.Now;
var ci = new CultureInfo("de-CH");
var output = date.ToString("d MMM", ci);
编辑:使用date.ToString("d MMM")
. 它将显示9 月 7 日。
这是我为想要本地化版本的类似情况提出的解决方案01/29
:
Regex.Replace(c.DateTimeFormat.ShortDatePattern, @"(yy(yy)?[/\.\- ]|[/\.\- ]yy(yy)?)", "")
这是所有文化的格式输出,因此您可以查看它是否适合您:
CultureInfo.GetCultures(CultureTypes.AllCultures)
.Select(c => new {
c.Name,
c.DateTimeFormat.MonthDayPattern,
c.DateTimeFormat.ShortDatePattern,
DayMonth1 = Regex.Replace(c.DateTimeFormat.ShortDatePattern, @"[/\.\- ]?yy[/\.\- ]?", ""),
DayMonth2 = Regex.Replace(c.DateTimeFormat.ShortDatePattern, @"(yyyy[/\.\- ]|[/\.\- ]yyyy|yy[/\.\- ]|[/\.\- ]yy)", ""),
DayMonth3 = Regex.Replace(c.DateTimeFormat.ShortDatePattern, @"(yy(yy)?[/\.\- ]|[/\.\- ]yy(yy)?)", "")
})
.OrderBy(x => x.Name)
.Dump();
替换将DateMonth1
删除几个文化的额外填充字符(特别是'bg')。
快速,简单,完成工作。
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Month).Substring(0,3);