C# 获取DayOfWeek值的本地化字符串
此代码未本地化:C# 获取DayOfWeek值的本地化字符串,c#,.net,datetime,date,localization,C#,.net,Datetime,Date,Localization,此代码未本地化: Enum.GetNames(typeof(DayOfWeek)) 我想要一个返回本地化字符串列表的方法,从任意的DayOfWeek开始,这是本地化的,我想要使用内置的资源来实现这一点。到目前为止,我已经提出了下面的代码,但我觉得应该以一种不象黑客的方式来支持它 public List<String> GetLocalizedDayOfWeekValues(DayOfWeek startDay = DayOfWeek.Sunday) {
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;
}
public List getLocalizedDayOfWeekValue(DayOfWeek startDay=DayOfWeek.Sunday)
{
var days=新列表();
DateTime日期=DateTime.Today;
while(date.DayOfWeek!=startDay)
日期。添加天数(1);
对于(int i=0;i<7;i++)
添加(日期:ToString(“dddd”);
返程天数;
}
了解更好的方法,请分享。谢谢 我想你在找。示例代码:
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);
}
}
}
这些方法将为您提供一个日期名称列表,默认为指定区域性的每周第一天:
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();
}
公共列表GetLocalizedDayofWeekValue(文化信息文化)
{
返回GetLocalizedDayOfWeekValue(区域性、区域性、DateTimeFormat.FirstDayOfWeek);
}
公共列表GetLocalizedDayOfWeekValue(CultureInfo文化,DayOfWeek startDay)
{
字符串[]dayNames=culture.DateTimeFormat.dayNames;
IEnumerable query=dayNames
.Skip((int)开始日期)
康卡特先生(
dayNames.Take((int)startDay)
);
返回query.ToList();
}
比较
List<string> dayNames = GetLocalizedDayOfWeekValues(new CultureInfo("fr-fr"));
List dayNames=getLocalizeddayofweekvalue(新文化信息(“fr”);
…到
List<string> dayNames = GetLocalizedDayOfWeekValues(new CultureInfo("fr-ca"));
List dayNames=getLocalizeddayofweekValue(新文化信息(“fr ca”);
我把这个扔进去。原始帖子似乎需要当前语言的日期名称。这可能来自于中设置的区域性:
System.Threading.Threads.CurrentThread.CurrentCulture
此区域性的DateTimeFormatInfo对象很容易检索,您可以使用GetDayName:
DateTimeFormatInfo.CurrentInfo.GetDayName(dayOfWeek)
但是,如果您使用CurrentUICulture/CurrentCulture范例,为了只获取日期名称,CurrentUICulture更合适。对于居住在美国的人来说,CurrentCulture完全可能设置为en US,但是对于说/读西班牙语的人来说,CurrentUICulture设置为es MX或es US。dateformat应使用区域性设置: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);
}