日历 API 让我很困惑。我正在尝试做的事情似乎很简单,但似乎并不适合我。
我想将一周的第一天设置为星期一,而不是默认的星期日(我知道它因区域设置而异,但我想始终强制执行星期一)。最重要的是,对于给定的日期,我想检索它所代表的星期几(例如,1 代表星期一,7 代表星期日)。
有没有办法使用默认的日历 API 来做到这一点?我试过类似的东西:
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTime(<some Date object that's a monday>);
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
它给了我 2,而不是 1。我怀疑这是因为它给了我 的值Calendar.MONDAY
,但我不完全确定。基于这种怀疑,以下方法确实有效:
Calendar cal = Calendar.getInstance();
cal.setTime(<some Date object that's a monday>);
System.out.println(
(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) ?
7 : cal.get(Calendar.DAY_OF_WEEK) - 1);
...但我宁愿没有那个 if 语句。有没有办法用直接的日历 API 做我想做的事?