星期几的Android日历问题

我正在尝试列出本周一至周日的一周中的所有天。例如,今天(发布日期)为2011年9月4日,即星期日。

我正在启动日历并将一周的第一天设置为星期一:

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY);

当我检查每月的某天时,会得到正确的结果:

int check = cal.get(Calendar.DAY_OF_MONTH);

// check is equal to 4

但是,当我将工作日设置为星期一时,它将跳至下一周而不是返回本周的星期一:

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

int mon = cal.get(Calendar.DAY_OF_MONTH);

// mon is equal to 5, when expected to be 29 (last Monday of August)

甚至将工作日设置为星期日也将在下个星期日而不是今天返回。

有人可以解释为什么这样做会如此,什么是解决此问题的最佳方法?

回答:

实际上,当我检查自己的测试时,它似乎可以正常工作, :

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY);

cal.setMinimalDaysInFirstWeek(4);

cal.set(2011, 8, 4);

int test = cal.get(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

int mon = cal.get(Calendar.DAY_OF_MONTH);

bTest.setText("" + test + "-" + mon);

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY);

cal.setMinimalDaysInFirstWeek(4);

cal.set(2011, 8, 5);

int test = cal.get(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

int mon = cal.get(Calendar.DAY_OF_MONTH);

bTest.setText("" + test + "-" + mon);

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY);

cal.setMinimalDaysInFirstWeek(4);

cal.set(2011, 8, 14);

int test = cal.get(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

int mon = cal.get(Calendar.DAY_OF_MONTH);

bTest.setText("" + test + "-" + mon);

因此,这不起作用:

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY);

cal.setMinimalDaysInFirstWeek(4);

//cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));

int test = cal.get(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

int mon = cal.get(Calendar.DAY_OF_MONTH);

bTest.setText("" + test + "-" + mon); // Display 4-5

而 :

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY);

cal.setMinimalDaysInFirstWeek(4);

// Workaround

cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));

int test = cal.get(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

int mon = cal.get(Calendar.DAY_OF_MONTH);

bTest.setText("" + test + "-" + mon); // Display 4-29

而 太:

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY);

cal.setMinimalDaysInFirstWeek(4);

// Workaround

cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));

cal.get(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

int mon = cal.get(Calendar.DAY_OF_MONTH);

bTest.setText("" + mon); // Display 29

但这不是:

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY);

cal.setMinimalDaysInFirstWeek(4);

// Workaround

cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

int mon = cal.get(Calendar.DAY_OF_MONTH);

bTest.setText("" + mon); // Display 5

以上是 星期几的Android日历问题 的全部内容, 来源链接: utcz.com/qa/400487.html

回到顶部