【问题标题】:How to get DayOfWeek in a local CultureInfo?如何在本地 CultureInfo 中获取 DayOfWeek?
【发布时间】:2012-06-30 07:44:59
【问题描述】:
DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
string day = dt.DayOfWeek.ToString();
day = day.Substring(0, 1).ToUpper();
MessageBox.Show(day); // result is "F"

我如何才能获得当地语言 (CultureInfo) 的结果,例如 - 法国,我在哪里可以找到用于此目的的语言参考列表?

【问题讨论】:

    标签: c# winforms datetime cultureinfo


    【解决方案1】:

    假设您已经拥有CultureInfo,您可以使用:

    string dayName = dateTime.ToString("dddd", culture);
    

    然后您需要自己获取它的第一个字符 - 没有自定义的日期/时间格式。您可以使用ddd 作为缩写日期名称,但这通常是三个字符,而不是一个。

    至于文化列表 - 你可以使用CultureInfo.GetCultures。它会因平台而异,并且可能会随时间而变化,甚至会因 .NET 版本而异。

    顺便说一句,这段代码并不理想:

    DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
    

    如果您碰巧在年末午夜之前将其称为,则您可能会得到“旧”年,然后将一月作为月份。您应该评估一次DateTime.Now(或DateTime.Today),然后使用相同的值两次:

    DateTime today = DateTime.Today;
    DateTime startOfMonth = new DateTime(today.Year, today.Month, 1);
    

    【讨论】:

    • 谢谢,Joh,它对我很有用。
    【解决方案2】:

    直接来自 MSDN:MSDN on DateTime with CultureInfo

    DateTime dt = DateTime.Now;
    // Sets the CurrentCulture property to U.S. English.
    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    // Displays dt, formatted using the ShortDatePattern
    // and the CurrentThread.CurrentCulture.
    Console.WriteLine(dt.ToString("d"));
    

    【讨论】:

    • 谢谢你,马雷,代码有效,但在链接上没有针对每种语言的文化信息截图列表。
    • 我不会为了在特定文化中格式化某些东西而改变当前的文化。我会在 ToString 调用中明确指定它。
    • @Alegro:你可以在这里找到一个列表:msdn.microsoft.com/en-us/library/…
    • 格式字符串 d 为您提供短日期 (11/19/2015)。请改用 ddd(星期四)或 dddd(星期四)。 dotnetfiddle.net/E1JR8e
    【解决方案3】:

    尝试dt.ToString("dddd"),然后在必要时操作该字符串。见Custom Date and Time Format Strings

    【讨论】:

      【解决方案4】:
      DateTime    dateValue    =    new    DateTime(2008,    6,    11);      
      Console.WriteLine(dateValue.ToString("ddd",    
                        new    CultureInfo("fr-FR")));
      

      【讨论】:

        【解决方案5】:

        就这么简单:

        var culture = new CultureInfo("da-DK");
        var datestring =datetime.ToString("dd MMMMM yyyy kl. hh:mm",culture)
        

        【讨论】:

          猜你喜欢
          • 2012-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-13
          • 1970-01-01
          • 2011-09-05
          • 2010-12-02
          • 1970-01-01
          相关资源
          最近更新 更多