【问题标题】:How check if today is sunday with Java Calendar如何使用 Java 日历检查今天是否是星期天
【发布时间】:2010-03-07 12:55:45
【问题描述】:

我写了几行不能正常工作的代码。为什么?有人能解释一下吗?

    Calendar date = Calendar.getInstance();

    date.set(2010, 03, 7);

    if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
        System.out.println("OK");

【问题讨论】:

  • 我很惊讶没有人建议使用 Joda Time...它是一个更好的用于处理日期/时间的 API。

标签: java date calendar


【解决方案1】:

为避免出错,您可以对月份使用日历静态值,例如:

date.set(2010, Calendar.MARCH, 7);

【讨论】:

    【解决方案2】:

    月数从零开始:

    date.set(2010, 2, 7);
    

    也不要养成用前导零写数字的习惯。这告诉 Java(和许多其他语言)您希望将数字解释为八进制(以 8 为基数)常量,而不是十进制。

    【讨论】:

      【解决方案3】:

      因为 4 月 2010 年 4 月 7 日不是星期日。 Months start with zero: 0 = 一月,1 = 二月,2 = 三月,...

      (另外,请注意,您在指定月份时使用了八进制 [03 而不是 3]。直到 9 月才知道,08 是一个无效的八进制数。)

      【讨论】:

        【解决方案4】:

        这是欧拉 19 的吗?

        如果是这样,这里有一个提示,从 1901 年到 2000 年,从第 0 个月到第 11 个月,从第 1 天到第 31 天循环,然后询问:

        if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY  && day==1)
             counter++;
        

        【讨论】:

          【解决方案5】:

          可能是因为月份是从 0 开始的,所以您将 4 月 7 日设置为星期三。

          【讨论】:

            【解决方案6】:

            月份值从 0 开始。 Java docs for set method of Calendar class

            另外,如果你想检查今天(程序运行的那一天:))是否是星期天,你不需要设置任何东西,因为getInstance方法返回一个基于默认时区当前时间的日历对象使用默认语言环境:

            Calendar date = Calendar.getInstance();    
            //date.set(2010, 03, 7);    
            if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
                System.out.println("OK");
            

            【讨论】:

              【解决方案7】:

              对我来说,这段代码可以正常工作,请以毫秒为单位设置确切的日期,然后尝试这样:-

                  GregorianCalendar dt = new GregorianCalendar();
                  dt.setTimeInMillis(getTimestampDDmmYYYY(date).getTime());
                  if((dt.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY| dt.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY))
                      return true;
              

              谢谢, Prabhat Kumar Kashyap

              【讨论】:

                【解决方案8】:

                cal.DAY_OF_WEEK == cal.SATURDAY || cal.DAY_OF_WEEK == cal.SATURDAY

                应该够好了。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2019-02-10
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-10-26
                  • 2014-09-13
                  • 2018-04-05
                  • 1970-01-01
                  相关资源
                  最近更新 更多