我想确定一周的哪一天是一个月的第一天,但出于某种原因,它并没有让我回到正确的一周.
这是我的代码如下:
CalendarMonth[] months = CalendarUtils.constructMonthViewArray(new GregorianCalendar());
public static CalendarMonth[] constructMonthViewArray(Calendar cal) {
CalendarMonth[] months = new CalendarMonth[CALENDAR_GRID_SIZE];
int year = cal.get(cal.YEAR);
int month = cal.get(cal.MONTH);;
// calculate how many days in the month
int numOfDays = getNumOfDaysInMonth(cal);
// calculate what day(mon-sunday) is the 1st of the month
int firstDayOfMonth = getFirstDayOfMonth(cal);
private static int getFirstDayOfMonth(Calendar cal) {
int firstDay = cal.get(Calendar.DAY_OF_WEEK);
Log.d(TAG, "");
// decrement it because our array deals with values 0-6(indexes)
firstDay--;
if (firstDay == 0) {
firstDay = 6;
} else {
// decrement again so that the days start from 0.
firstDay--;
}
return firstDay;
}
Run Code Online (Sandbox Code Playgroud)
来自"int firstDay = cal.get(Calendar.DAY_OF_WEEK);"的行 没有给我正确的一周中的一天,并返回值2,以获得本月的第一天(2011年1月),当月的第一天是星期六(7).
我错过了什么吗?我已经调试并检查了cal变量设置的月份,年份和日期,它确实表明今天的日期已更正,但是当我得到星期几时它没有得到值7.
Jon*_*eet 11
我无法重现你所看到的问题.正如迈克尔所说,有很多代码没有向我们展示,但Calendar.getDayOfWeek绝对有效:
import java.util.*;
public class Test {
public static void main(String[] args) {
Calendar calendar = new GregorianCalendar();
calendar.set(2011, 0, 1); // 0 = January
System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // Prints 7
}
}
Run Code Online (Sandbox Code Playgroud)
您是否忘记了几个月是0 java.util.Calendar?
如果您可以制作类似的简短但完整的节目,以显示一周中的错误日期,请发布.
你正在递减的事实firstDay 两倍之内getFirstDayOfMonth,似乎有些奇怪,还有一个事实,即它并没有真正反映该方法的名称(如迈克尔提到的).
最后,我对Java的日期/时间处理常数的建议:如果你能可能使用约达时间代替java.util.Calendar,这样做.这是一个更好,更好的API.
| 归档时间: |
|
| 查看次数: |
9338 次 |
| 最近记录: |