【问题标题】:How to get the integer value of day of week如何获取星期几的整数值
【发布时间】:2012-03-01 05:28:36
【问题描述】:

如何以整数格式获取星期几?我知道 ToString 只会返回一个字符串。

DateTime ClockInfoFromSystem = DateTime.Now;
int day1;
string day2;
day1= ClockInfoFromSystem.DayOfWeek.ToString(); /// it is not working
day2= ClockInfoFromSystem.DayOfWeek.ToString(); /// it gives me string

【问题讨论】:

  • @Joe,我无法重新格式化他的代码以将他的代码放入代码块中,这是为什么呢?
  • 你打电话给ToString() 那么你为什么会期待一个字符串呢?
  • @Dave,我不得不将它与问题的文本分开一行,否则它只是缩进了代码......
  • 酷!我试图将他的代码变成代码块并且它允许我这样做。

标签: c# datetime dayofweek date-conversion


【解决方案1】:

使用

day1 = (int)ClockInfoFromSystem.DayOfWeek;

【讨论】:

【解决方案2】:
day1= (int)ClockInfoFromSystem.DayOfWeek;

【讨论】:

  • @JustinSatyr - FiveTools 显然只是举了一个例子。作者试图将字符串值设置为整数变量不是他的错。
  • @Ramhound:我没有投反对票,也没有批评。我以为他看错了密码。显然我是正确的,因为他更正了他的代码。
【解决方案3】:
int day = (int)DateTime.Now.DayOfWeek;

一周的第一天:星期日(值为零)

【讨论】:

    【解决方案4】:

    如果要将一周的第一天设置为星期一,整数值为 1,星期日为整数值 7

    int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
    

    【讨论】:

    • 投票赞成,因为所有理智的人都会想要这个。 ISO 8601 在这一点上非常清楚。周一是第 1 天,周日是第 7 天。
    • 未释放 DayOfWeek 属性将在星期日返回零。通过实施最高投票的答案几乎引入了一个错误。谢谢!
    【解决方案5】:
    DateTime currentDateTime = DateTime.Now;
    int week = (int) currentDateTime.DayOfWeek;
    

    【讨论】:

      【解决方案6】:

      试试这个。它会工作得很好:

      int week = Convert.ToInt32(currentDateTime.DayOfWeek);
      

      【讨论】:

        【解决方案7】:

        将DayOfWeek等Enum的整数值作为字符串获取的正确方法是:

        DayOfWeek.ToString("d")
        

        【讨论】:

        • 这将返回string,而不是int
        • 这是一个月中的一天而不是一周中的一天
        • @Fritz 不,它不是,正如我所说,它是一个“作为字符串”的枚举整数。您对日期格式感到困惑,这不是。
        【解决方案8】:

        另一种获取整数值为 1 的星期一和整数值为 7 的星期日的方法

        int day = ((int)DateTime.Now.DayOfWeek + 6) % 7 + 1;

        【讨论】:

          【解决方案9】:

          正确答案,确实是得到int值的正确答案。

          但是,例如,如果您只是检查以确保它是星期天...请考虑使用以下代码,而不是强制转换为 int。这提供了更多的可读性。

          if (yourDateTimeObject.DayOfWeek == DayOfWeek.Sunday)
          {
              // You can easily see you're checking for sunday, and not just "0"
          }
          

          【讨论】:

            【解决方案10】:

            可读性很重要。

            如果需要整数:

            int day1 = (int)ClockInfoFromSystem.DayOfWeek;
            

            如果需要工作日整数的字符串:

            string daystr = $"{(int)ClockInfoFromSystem.DayOfWeek}"; // Unambiguous string of int.
            

            不要使用推荐的 ToString 转换,因为大多数程序员将不得不查找它以确保它是整数字符串而不是月份中的日期。真的是微软吗?

            string daystr = ClockInfoFromSystem.DayOfWeek.ToString("d"); // Whaa? Horrible! Don't do this.
            

            要更改为一周的开始,请添加从星期日 mod 7 开始的天数。从星期日开始倒数以获取天数,例如1个周日回来就是周六,2个周日回来就是周五,以此类推

            int satStart = (int)(ClockInfoFromSystem.DayOfWeek + 1) % 7; // Saturday start
            int monStart = (int)(ClockInfoFromSystem.DayOfWeek + 6) % 7; // Monday start
            

            【讨论】:

              猜你喜欢
              • 2014-10-14
              • 2015-09-19
              • 1970-01-01
              • 2016-10-22
              • 1970-01-01
              • 2017-02-18
              • 2011-01-26
              • 1970-01-01
              • 2012-03-29
              相关资源
              最近更新 更多