C#:DateTime.DayOfWeek 与字符串比较

标签 c# datetime

这段代码是我正在尝试做的事情的简化版本:

string day = Thursday;
DateTime dt = DateTime.Now;

if (day == dt.DayOfWeek)
{
     // start the program
}

我需要从数据库中读取星期几的值,将其分配给一个字符串,然后将该字符串与 dt.DayOfWeek 进行比较以检查程序是否应该执行。

我的错误是这样的:“运算符‘==’不能应用于‘string’和‘System.DayOfWeek’类型的操作数”

有人知道如何将字符串与 DateTime.DayOfWeek 值进行比较吗?

最佳答案

最简单的是将枚举转换为字符串:

if (day == dt.DayOfWeek.ToString())...

注意事项:

  • 如果您可以将 day 的类型更改为 DayOfWeek 枚举,则可以避免字符串比较(及其相关的本地化/比较问题)。
  • 如果您必须使用字符串,请务必确定大小写是否重要(即“星期四”是否应等于 DayOfWeek.Thursday)并使用相应的 String.Equals 方法。
  • 考虑按照其他答案中的建议使用 Parse 将字符串转换为枚举:((DayOfWeek)Enum.Parse(typeof(DayOfWeek), day)
  • 确保传入的字符串始终是英语 - 如果它可能是其他语言,您将需要研究手动匹配值与 CultureInfo.DateTimeFormat.DayNames 中提供的值.

关于C#:DateTime.DayOfWeek 与字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13713366/

相关文章:

c# - 使用 Entity Framework 将记录插入表中

C# ASP.Net Core 与 Autofac 集成时面临的问题

python - SQLite 日期类型 查询网站数据库时出错

javascript - 使用 moment.js 将 date() 设置为用户时区的午夜

sql - MySQL DATE_ADD 不起作用

php - 闰年的最后一天,第 53 周还是第 1 周?

c# - 从 MS Outlook 邮件中读取发件人的电子邮件地址

c# - 创建枚举后销毁 EnumBuilder?

c# - 用于呈现新闻和类别的 Razor ,多个模型

c# - 中欧是否有通用的 TimeZoneInfo?