这段代码是我正在尝试做的事情的简化版本:
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/