此代码未本地化:
Enum.GetNames(typeof(DayOfWeek))
我想要一个返回本地化字符串列表的方法,它从一个本地化的任意DayOfWeek开始,并且我想使用内置的资源来做到这一点。到目前为止,我已经想出了下面的代码,但我觉得应该以一种不像黑客的方式来支持它。
public List<String> GetLocalizedDayOfWeekValues(DayOfWeek startDay = DayOfWeek.Sunday)
{
var days = new List<String>();
DateTime date = DateTime.Today;
while (date.DayOfWeek != startDay)
date.AddDays(1);
for (int i = 0; i < 7; i++)
days.Add(date.ToString("dddd"));
return days;
}
有没有更好的方法,请分享。谢谢!
发布于 2012-06-27 02:53:33
我想你是在找DateTimeFormatInfo.DayNames
吧。示例代码:
using System;
using System.Globalization;
class Program
{
public static void Main()
{
var french = new CultureInfo("FR-fr");
var info = french.DateTimeFormat;
foreach (var dayName in info.DayNames)
{
// dimanche, lundi etc
Console.WriteLine(dayName);
}
}
}
发布于 2012-06-27 03:09:09
这些方法将为您提供一个日期名称列表,默认为指定区域性每周的第一天:
public List<String> GetLocalizedDayOfWeekValues(CultureInfo culture)
{
return GetLocalizedDayOfWeekValues(culture, culture.DateTimeFormat.FirstDayOfWeek);
}
public List<String> GetLocalizedDayOfWeekValues(CultureInfo culture, DayOfWeek startDay)
{
string[] dayNames = culture.DateTimeFormat.DayNames;
IEnumerable<string> query = dayNames
.Skip((int) startDay)
.Concat(
dayNames.Take((int) startDay)
);
return query.ToList();
}
比较一下...
List<string> dayNames = GetLocalizedDayOfWeekValues(new CultureInfo("fr-fr"));
...to...
List<string> dayNames = GetLocalizedDayOfWeekValues(new CultureInfo("fr-ca"));
发布于 2018-01-29 12:07:28
我会把这个扔进去的。原始帖子似乎想要当前语言的日期名称。这可能来自于中设置的文化:
System.Threading.Threads.CurrentThread.CurrentCulture
此区域性DateTimeFormatInfo对象很容易检索,您可以使用GetDayName:
DateTimeFormatInfo.CurrentInfo.GetDayName(dayOfWeek)
但是,如果您使用CurrentUICulture/CurrentCulture范例,为了仅获取日期名称,则CurrentUICulture更合适。对于居住在美国的人,CurrentCulture完全可以设置为en-US,但是对于说/读西班牙语的人,CurrentUICulture设置为es-MX或es-US。日期格式应使用区域性设置: mm/dd/yyyy,但对于日期名称,应使用UIculture设置: Lunes、Martes等。
因此,我建议使用此技术:
public String getLocalDayName( DayOfWeek dayOfweek) {
var culture = System.Threading.Thread.CurrentThread.CurrentUICulture;
var format = culture.DateTimeFormat;
return format.GetDayName(dayOfweek);
}
https://stackoverflow.com/questions/11214057
复制相似问题