【发布时间】:2011-01-26 19:57:29
【问题描述】:
我用 Java 开发了一个日历小部件(专门用于 BlackBerry 开发)。用户可以查看当前月份的所有天数,也可以按月/年向前/向后移动。
当我绘制日历(以表格格式)时,我想更改比当前日期提前 X 天的任何日期的颜色。我目前只能在屏幕上显示的日历与当前月份相同的月份进行检查:
if (calendarMonth == currentMonth) {
for (int i = 1; i <= (NUM_DAYS_IN_MONTH); i++) {
if (i > currentDay + Constants.CALENDAR_DAYS_IN_ADVANCE) {
System.out.println("VALID: " + i);
}
}
}
但是当显示的日历与当前月份不同时,我无法编写解决方案。例如,今天是 1 月 26 日,因此 1 月日历会将所有 1 月的日子显示为灰色。当用户将月份更改为二月时,接下来的几天应该是灰色的:
Constants.CALENDAR_DAYS_IN_ADVANCE = 14;
1/26/2011 - 2/9/2011
超过该范围的任何日子都将是黑色。所以基本上,我正在寻找一个函数,它将接受两个 java.util.Calendar 对象(显示的活动日历和当前日期的日历),并且该函数将返回当前日期范围内的日期数组 - CALENDAR_DAYS_IN_ADVANCE。
我还需要记住以下几点:
1) 我无法将日期与 java.util.Calendar.add() 或 java.util.Calendar.subtract() 函数进行比较,因为 BlackBerry 的 java 是有限的
2) 这也必须跨年工作,例如 2010 年 12 月 - 2011 年 1 月
谁能帮忙解释一下逻辑?
谢谢!
【问题讨论】:
-
设置月份时为什么要设置monthOfYear-1?
标签: java object blackberry calendar compare