public static void main(String[] args) {
int week = 1;
int year = 2010;
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.WEEK_OF_YEAR, week);
calendar.set(Calendar.YEAR, year);
Date date = calendar.getTime();
System.out.println(date);
}
如果我将周,年作为输入,我会根据我们的桌面日历查找确切的开始和结束日期。
但上面的代码将输出为27th Jan, 2009, Sunday
。
我知道这是因为默认的一周的第一天是按照美国的SUNDAY,但我需要根据桌面日历1st Jan, 2010, Friday
作为一周的开始日期
我的要求: 如果我的输入是:
我需要:
1st May, 2015 --> as first day of the week
2nd May, 2015 --> as last day of the week
如果我输入的是:
我需要:
1st June, 2015 --> as first day of the week
6th June, 2015 --> as last day of the week
任何人都可以帮助我吗?
答案 0 :(得分:1)
不使用CALENDAR.Week,而是使用Calendar.DAY_OF_YEAR。我刚试过它,它对我有用:
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, 2010);
calendar.set(Calendar.DAY_OF_YEAR, 1);
System.out.println(calendar.getTime());
calendar.set(Calendar.DAY_OF_YEAR, 7);
System.out.println(calendar.getTime());
}
如果你想让它在任意一周工作,只需要做一些数学计算,找出你想要的那一天。
编辑:如果您想输入一个月,也可以使用Calendar.DAY_OF_MONTH。
答案 1 :(得分:1)
我写了一个Swing日历小部件。该小部件中的一种方法计算一周中的第一天,其中一周从用户选择的一天开始,如星期五。
startOfWeek是一个带有Calendar常量的int,比如Calendar.FRIDAY。
DAYS_IN_WEEK是一个int常量,值为7.
/**
* This method gets the date of the first day of the calendar week. It could
* be the first day of the month, but more likely, it's a day in the
* previous month.
*
* @param calendar
* - Working <code>Calendar</code> instance that this method can
* manipulate to set the first day of the calendar week.
*/
private void getFirstDate(Calendar calendar) {
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) % DAYS_IN_WEEK;
int amount = 0;
for (int i = 0; i < DAYS_IN_WEEK; i++) {
int j = (i + startOfWeek) % DAYS_IN_WEEK;
if (j == dayOfWeek) {
break;
}
amount--;
}
calendar.add(Calendar.DAY_OF_MONTH, amount);
}
其余代码可以在我的文章Swing JCalendar Component中看到。