正确获取星期几(Calendar.DAY_OF_WEEK)
Calendar now = Calendar.getInstance(); //一周第一天是否为星期天 boolean isFirstSunday = (now.getFirstDayOfWeek() == Calendar.SUNDAY); //获取周几 int weekDay = now.get(Calendar.DAY_OF_WEEK); //若一周第一天为星期天,则-1 if(isFirstSunday){ weekDay = weekDay - 1; if(weekDay == 0){ weekDay = 7; } } //打印周几 System.out.println(weekDay); //若当天为2014年10月13日(星期一),则打印输出:1 //若当天为2014年10月17日(星期五),则打印输出:5 //若当天为2014年10月19日(星期日),则打印输出:7
星期日为一周的第一天 | SUN | MON | TUE | WED | THU | FRI | SAT |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
星期一为一周的第一天 | MON | TUE | WED | THU | FRI | SAT | SUN |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
以下参考:
1. 在获取月份时,Calendar.MONTH + 1 的原因
Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们需要+1。
2. 在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因
Java中Calendar.DAY_OF_WEEK其实表示:一周中的第几天,所以他会受到 第一天是星期几 的影响。
有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,这2种情况是需要区分的。
看下表的返回值
星期日为一周的第一天 | SUN | MON | TUE | WED | THU | FRI | SAT |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
星期一为一周的第一天 | MON | TUE | WED | THU | FRI | SAT | SUN |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
所以Calendar.DAY_OF_WEEK需要根据本地化设置的不同而确定是否需要 “-1”
Java中设置不同地区的输出可以使用 Locale.setDefault(Locale.地区名) 来实现。
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
返回的是周几,而不是一周的第几天
可以这样设置,星期第一天是星期几:
calendar.setFirstDayOfWeek(Calendar.MONDAY);
也可以设置Calendar.SUNDAY
设置好了就决定了当前日期的WEEK_OF_YEAR,但并不会改变DAY_OF_WEEK !
3. 获取日期时 Calendar.DAY_OF_MONTH 不需要特殊的操作,他直接返回一个月中的第几天
相关推荐
在Java的`Calendar`类中,周的开始默认是根据`Calendar.DAY_OF_WEEK`的值来设定的,这通常是周一。你可以通过`getFirstDayOfWeek()`方法查询,也可以使用`setFirstDayOfWeek()`方法来改变这个设置。 现在,如果我们...
System.out.println("DAY_OF_WEEK_IN_MONTH:" + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); System.out.println("AM_PM:" + calendar.get(Calendar.AM_PM)); System.out.println("HOUR:" + calendar.get...
这里通过调整`Calendar`实例中的`DAY_OF_WEEK`属性为星期一,然后返回该日期。 #### 获取当前周的某一天 ```java public String getCurrentWeekday() { Calendar cal = Calendar.getInstance(); cal.add...
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()); } public String getCurrentWeekday() { Calendar cal = Calendar.getInstance(); cal....
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // 将当前日期设为星期一 System.out.println("本周第一天:" + c.getTime()); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // 将当前日期设为...
", 星期: " + calendar.get(Calendar.DAY_OF_WEEK)); } ``` 上述代码将打印出5月的每一天以及对应的星期。`Calendar.DAY_OF_WEEK`返回的是1到7的值,其中1代表周日,7代表周六。你可能需要将其转换为常见的星期...
`Calendar`类还提供了诸如获取周几(`get(Calendar.DAY_OF_WEEK)`)、获取一年中的第几天(`get(Calendar.DAY_OF_YEAR)`)等功能,以及调整日期(`roll()`方法)和判断闰年(`isLeapYear()`方法)等。 总之,Java的...
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); System.out.println(df.format(cal.getTime())); // 输出:2006-01-02 ``` 7. add() 和 roll() 的用法 add() 和 roll() 方法是 Calendar 对象的两个重要方法。...
- 获取某一天是一年中的第几星期,可以使用 `Calendar.WEEK_OF_YEAR`: ```java Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2006); cal.set(Calendar.MONTH, 9); // 9代表10月,因为月份...
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.add(Calendar.DAY_OF_MONTH, 6); return cal.getTime(); } /** * 获取指定时间范围的第一天 * * @param dateRangeType * 时间范围类型 * ...
这里通过`(c.get(Calendar.DAY_OF_WEEK) + 5) % 7 + 1`进行了一些转换,使得结果为1(星期一)到7(星期日)之间的整数。 - `c.get(Calendar.HOUR_OF_DAY)`:获取小时数(24小时制)。 - `c.get(Calendar.MINUTE)`...
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); Date firstDayOfWeek = calendar.getTime(); ``` ### 4. 获取月、年的第一天和最后一天 要获取某个月的第一天和最后一天,可以先设置`Calendar`的`DAY_OF_...
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); if (calendar.get(Calendar.YEAR) == year) { System.out.println("գ" + simdf.format(calendar.getTime())); dateList.add(simdf.format(calendar....
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); System.out.println(df.format(cal.getTime())); ``` 七、add() 和 roll() 的用法 在 Java 中,add() 和 roll() 方法是 Calendar 类的两个重要方法。add() 方法...
要得到某月的第一天是星期几,我们可以创建一个`Calendar`实例,设置到指定的月份和年份,然后调用`get(Calendar.DAY_OF_WEEK)`方法,其中返回值范围是1(表示星期日)到7(表示星期六)。 ```java Calendar ...
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); String time = getTime(cal) + " 00:00:00"; System.out.println(time); return time; } ``` 五、获取本周日日期 获取本周日日期可以使用 Calendar 类的 set ...
int startOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - Calendar.MONDAY; calendar.add(Calendar.DAY_OF_MONTH, -startOfWeek); Date startOfWeekDate = calendar.getTime(); calendar.add(Calendar.DAY_OF_...
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); if (dayOfWeek != Calendar.FRIDAY) { int daysToFirstFriday = (Calendar.FRIDAY - dayOfWeek + 7) % 7; calendar.add(Calendar.DAY_OF_MONTH, ...
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); System.out.println(df.format(cal.getTime())); // 输出:2006-01-02 ``` add() 和 roll() 的用法 在 Java 中,add() 和 roll() 两个方法都是用于修改 Calendar ...
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); System.out.println(df.format(cal.getTime())); //输出:2006-01-02 add() 和 roll() 的用法 add() 和 roll() 是 Calendar 类的两个方法,用于添加或回滚日期和...