【问题标题】:DateTime DayOfWeek ComparisonDateTime DayOfWeek 比较
【发布时间】:2011-01-11 07:15:23
【问题描述】:

我想比较一个日期,看看它是否在星期六之前:

        //Check if Saturday YET
        if (MYWorkDay.DayOfWeek < DateTime.DayOfWeek.Saturday)
            IGottaWork();
        else
            Party();

似乎没有办法做到这一点。

有办法吗?

提前致谢

【问题讨论】:

  • 你不能转换成 int 并比较吗?

标签: c# .net datetime


【解决方案1】:

为什么不这样?

    if (MYWorkDay.DayOfWeek != DayOfWeek.Saturday
          && MYWorkDay.DayOfWeek != DayOfWeek.Sunday) 
    {
        IGottaWork();
    }
    else
        Party();

甚至更好:

List<DayOfWeek> partyDays = new List<DayOfWeek> {
    DayOfWeek.Saturday, DayOfWeek.Sunday
};

if (partyDays.Contains(MYWorkDay.DayOfWeek))
    Party();
else
    IGottaWork();

【讨论】:

  • 我明白我做错了什么。我在 DayOfWeek 之前不需要 DateTime。傻我:) 谢谢你的帮助
  • 我刚刚在我的博客上发布了(这里似乎不适合作为答案)我最喜欢的两个自定义扩展方法 In 和 Between。有时我认为我花了太多时间试图让我的代码看起来像一个文档。 josheinstein.com/blog/index.php/2010/01/in-between
  • 这很奇怪......在编辑历史中它显示我正在编辑 DayOfWeek 的东西......我在编辑中所做的只是改变 ||到 &&。
  • @Josh - 那是因为我在您编辑我的逻辑错误之前编辑了我的答案以删除它们。一场完美的编辑风暴! :)
  • 如果您有兴趣以更快的方式检索星期几:stackoverflow.com/a/22278311/3315914
【解决方案2】:

来自 MSDN:

DayOfWeek 枚举中常量的值范围为 DayOfWeek.Sunday 到 DayOfWeek.Saturday。如果转换为整数,它的 值范围从零(表示 DayOfWeek.Sunday)到六 (表示 DayOfWeek.Saturday)。

因此您也可以使用大于和小于运算符进行计算。

//Check if Saturday YET
if (MYWorkDay.DayOfWeek < DayOfWeek.Saturday && MYWorkDay.DayOfWeek > DayOfWeek.Sunday)
    IGottaWork();
else
    Party();

【讨论】:

    【解决方案3】:

    DayOfWeek 是一个枚举,从星期日开始为 0,星期六作为最后一个元素,因此整数形式为 6。比较时考虑一下。

    【讨论】:

      【解决方案4】:

      如果您宁愿进行比较而不是检查列表,您也可以这样做:

      if ((MYWorkDay.DayOfWeek.CompareTo(DayOfWeek.Sunday) > 0) && (MYWorkDay.DayOfWeek.CompareTo(DayOfWeek.Saturday) < 0))
      {
            IGottaWork();
      }
      else
      {
            Party();
      }
      

      【讨论】:

        【解决方案5】:

        试试这个:

        if (new [] {DayOfWeek.Saturday, DayOfWeek.Sunday}.Contains(d.DayOfWeek)) {
          // party :D
        } else {
          // work  D:
        }
        

        【讨论】:

          猜你喜欢
          • 2016-11-01
          • 1970-01-01
          • 2014-08-20
          • 2011-09-30
          • 1970-01-01
          • 2019-11-05
          • 2020-10-07
          • 2014-05-02
          • 1970-01-01
          相关资源
          最近更新 更多