11

我试图弄清楚如何让我的程序计算一周中的星期日数。

我尝试了以下事情:

if (date.DAY_OF_WEEK == date.SUNDAY) {
    System.out.println("Sunday!");
}

然而它似乎不起作用?

当我尝试时,System.out.Println the date.DAY_OF_WEEK我得到:7

有谁知道我如何检查当前日历日期是否为星期日?

更新更多信息

  1. 首先是 date.DAY_OF_WEEK 是一个 Calendar 对象!

  2. 我确保将日历对象设置date为星期天

我得到 7 的系统输出是当我尝试运行时它返回给我的内容,date.DAY_OF_MONTH即使它设置为星期天

亚历克斯的第二次更新

这或多或少是我的代码

Calendar startDate = Calendar.getInstance();

    startDate.set(2012, 12, 02);
    if (startDate.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
        System.out.println("true");
    }else {
        System.out.println("FALSE");
    }
4

3 回答 3

30
Calendar cal = ...;
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
    System.out.println("Sunday!");
}

Calendar.DAY_OF_WEEK始终等于7无论Calendar您使用什么实例(请参阅此链接),它都是一个常量,用于与Calendar.get()检索正确值的方法一起使用。

调用Calendar.get(Calendar.DAY_OF_WEEK)它会返回真正的星期几。Calendar此外,您会在类中找到有用的值Calendar.SUNDAY(以及其他日期和月份),以便您在代码中更加明确并避免错误,例如JANUARY等于0.

编辑

就像我说的那样,Calendar该类确实包含有用的常量供您使用。12它们没有开始的月份编号0(见上文),Java 日期处理中的DECEMBER月份编号也是如此。11

Calendar startDate = Calendar.getInstance();
startDate.set(2012, Calendar.DECEMBER, 02);
if (startDate.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
    System.out.println("true");
} else {
    System.out.println("FALSE");
}

当然会打印true

于 2012-11-30T14:47:50.367 回答
3

注意: Joda -Time项目现在处于维护模式。如果您不必使用旧代码,请参阅此答案。


如果您必须经常使用日期或时间,您可能想尝试使用Joda-Time

您的代码将如下所示:

LocalDate startDate = new LocalDate(2012, 12, 2);
int day = startDate.dayOfWeek().get();   // gets the day of the week as integer

if (DateTimeConstants.SUNDAY == day) {
    System.out.println("It's a Sunday!");
}

您还可以从以下位置获取文本字符串dayOfWeek()

String dayText = startDate.dayOfWeek().getAsText();

将返回字符串“Sunday”。

于 2012-12-06T09:10:40.897 回答
3
于 2019-04-02T03:22:18.933 回答