Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取DayOfWeek值的本地化字符串_C#_.net_Datetime_Date_Localization - Fatal编程技术网

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);
}