C# 中如何获取当天是星期几

在 C# 中获取当天是星期几,你可以使用 DateTime.NowDateTime.Today 来获取当前日期,然后访问其 DayOfWeek 属性。这个属性返回一个 System.DayOfWeek 枚举值。

DayOfWeek 枚举的值如下:

  • Sunday (0)
  • Monday (1)
  • Tuesday (2)
  • Wednesday (3)
  • Thursday (4)
  • Friday (5)
  • Saturday (6)

以下是几种获取和显示当天星期几的方法:

方法一:获取 DayOfWeek 枚举值

这是最基础的方法,直接获取枚举值。

using System;

public class GetDayOfWeek
{
    public static void Main(string[] args)
    {
        // 获取当前本地日期和时间
        DateTime now = DateTime.Now;

        // 获取 DayOfWeek 枚举值
        DayOfWeek today = now.DayOfWeek;

        // 输出枚举值(默认是英文名称)
        Console.WriteLine($"今天是:{today}"); // 例如:Tuesday

        // 你也可以获取对应的整数值 (星期日是 0)
        Console.WriteLine($"今天是星期(数字表示):{(int)today}"); // 例如:2 (因为今天是星期二)

        // 如果你只需要当天日期,不关心时间,可以用 DateTime.Today
        DayOfWeek todayDateOnly = DateTime.Today.DayOfWeek;
        Console.WriteLine($"今天 (仅日期) 是:{todayDateOnly}"); // 效果通常一样
    }
}

方法二:获取本地化的星期几名称 (例如:中文)

如果你想显示中文的“星期几”,可以使用 DateTime.ToString() 方法并指定区域性信息 (CultureInfo)。

using System;
using System.Globalization; // 需要引入 System.Globalization 命名空间

public class GetLocalizedDayOfWeek
{
    public static void Main(string[] args)
    {
        DateTime now = DateTime.Now;

        // 创建中文(中国)的区域性信息对象
        CultureInfo chineseCulture = new CultureInfo("zh-CN");

        // 使用 "dddd" 格式说明符获取完整的星期几名称
        string todayChineseLong = now.ToString("dddd", chineseCulture);
        Console.WriteLine($"今天是:{todayChineseLong}"); // 输出:星期二

        // 使用 "ddd" 格式说明符获取缩写的星期几名称
        string todayChineseShort = now.ToString("ddd", chineseCulture);
        Console.WriteLine($"今天是:{todayChineseShort}"); // 输出:周二

        // 获取英文名称(默认或指定 "en-US")
        string todayEnglish = now.ToString("dddd", CultureInfo.InvariantCulture); // 或者 new CultureInfo("en-US")
        Console.WriteLine($"Today is: {todayEnglish}"); // 输出:Tuesday
    }
}

总结:

  • 要获取 DayOfWeek 枚举值:DayOfWeek today = DateTime.Now.DayOfWeek;
  • 要获取当前区域性设置下的星期几名称:string dayName = DateTime.Now.ToString("dddd"); (结果取决于系统设置)
  • 要获取特定语言(如中文)的星期几名称:string dayNameZh = DateTime.Now.ToString("dddd", new CultureInfo("zh-CN"));

选择哪种方法取决于你的具体需求:是需要枚举值进行逻辑判断,还是需要本地化的字符串用于显示。