首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取DayOfWeek值的本地化字符串

获取DayOfWeek值的本地化字符串
EN

Stack Overflow用户
提问于 2012-06-27 02:50:02
回答 3查看 7.1K关注 0票数 13

此代码未本地化:

代码语言:javascript
运行
复制
Enum.GetNames(typeof(DayOfWeek))

我想要一个返回本地化字符串列表的方法,它从一个本地化的任意DayOfWeek开始,并且我想使用内置的资源来做到这一点。到目前为止,我已经想出了下面的代码,但我觉得应该以一种不像黑客的方式来支持它。

代码语言:javascript
运行
复制
    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; 
    }

有没有更好的方法,请分享。谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-27 02:53:33

我想你是在找DateTimeFormatInfo.DayNames吧。示例代码:

代码语言:javascript
运行
复制
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);
        }
    }    
}
票数 29
EN

Stack Overflow用户

发布于 2012-06-27 03:09:09

这些方法将为您提供一个日期名称列表,默认为指定区域性每周的第一天:

代码语言:javascript
运行
复制
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();
}

比较一下...

代码语言:javascript
运行
复制
List<string> dayNames = GetLocalizedDayOfWeekValues(new CultureInfo("fr-fr"));

...to...

代码语言:javascript
运行
复制
List<string> dayNames = GetLocalizedDayOfWeekValues(new CultureInfo("fr-ca"));
票数 3
EN

Stack Overflow用户

发布于 2018-01-29 12:07:28

我会把这个扔进去的。原始帖子似乎想要当前语言的日期名称。这可能来自于中设置的文化:

System.Threading.Threads.CurrentThread.CurrentCulture

此区域性DateTimeFormatInfo对象很容易检索,您可以使用GetDayName:

代码语言:javascript
运行
复制
DateTimeFormatInfo.CurrentInfo.GetDayName(dayOfWeek)

但是,如果您使用CurrentUICulture/CurrentCulture范例,为了仅获取日期名称,则CurrentUICulture更合适。对于居住在美国的人,CurrentCulture完全可以设置为en-US,但是对于说/读西班牙语的人,CurrentUICulture设置为es-MX或es-US。日期格式应使用区域性设置: mm/dd/yyyy,但对于日期名称,应使用UIculture设置: Lunes、Martes等。

因此,我建议使用此技术:

代码语言:javascript
运行
复制
public String getLocalDayName( DayOfWeek dayOfweek) {
    var culture = System.Threading.Thread.CurrentThread.CurrentUICulture;
    var format = culture.DateTimeFormat;
    return format.GetDayName(dayOfweek);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11214057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档