繁体   English   中英

C#:DateTime.DayOfWeek进行字符串比较

[英]C#: DateTime.DayOfWeek to string comparison

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

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())...

笔记:

  • 如果你可以改变的类型dayDayOfWeek枚举可以避开字符串比较(及其相关的本地化/比较问题)。
  • 如果你必须使用字符串,请确保判断大小写是否重要(即“thursday”应该等于DayOfWeek.Thursday )并使用相应的String.Equals方法。
  • 考虑使用Parse将字符串转换为枚举,如其他答案所示: ((DayOfWeek)Enum.Parse(typeof(DayOfWeek), day)
  • 确保传入的字符串始终为英语 - 如果它可能是其他语言,则需要考虑手动匹配CultureInfo.DateTimeFormat.DayNames中提供的值。

使用Enum.Parse获取Enum值:

if ((DayOfWeek)Enum.Parse(typeof(DayOfWeek), day) == dt.DayOfWeek)

如果你不确定它是否是有效值,那就是TryParse<T>

Enum val;
if (Enum.TryParse<DayOfWeek>(day, out val) && val == dt.DayOfWeek)

尝试DayOfWeek day = DayOfWeek.Thursday;

您可以使用Enum.TryParse<DayOfWeek>

string strDay = "Wednesday";
DayOfWeek day;
if (Enum.TryParse<DayOfWeek>(strDay, out day)
    && day == DateTime.Today.DayOfWeek)
{
    // ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM