关于如何将一周中的当前日期放在Stack上的信息有上百万,而我一直都没有解决这些问题。我正在浏览API,但仍然看不到该怎么做。
我需要使用Java设置每周日历。因此,如果星期日是29日,则星期一是30日,星期二是31日或1日,星期三是1日或2日,依此类推。
因此,我需要做的是获取一周的第一天(星期日,这对应于Calendar._DAY_OF_WEEK
中的1),其月份的某天(这将是Calendar.DAY_OF_MONTH
)以及此后的接下来的六天,并考虑可能会开始新的月份。
我知道这听起来很简单,但是我已经在StackOverflow上徘徊了几个小时,而且令人惊讶的是我还没有找到这样的东西。
最佳答案
这将获得当前一周的日期。
private Locale locale = Locale.UK;
// 1. create calendar
private Calendar cal = new GregorianCalendar(locale);
private DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale);
public void getThisWeeksDays() {
// 2. set calendar to the current date
cal.setTime(new Date());
cal.setFirstDayOfWeek(Calendar.SUNDAY);
// 3. set calendars dOW field to the first dOW (last sunday)
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
for (int i = 0; i < 7; i++) {
// 4. get some infomation
String nameOfMonth = cal.getDisplayName(Calendar.MONTH, Calendar.LONG, locale);
String nameOfDay = cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, locale);
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(dayOfMonth + ": " + df.format(cal.getTime()));
// 5. increase day field; add() will adjust the month if neccessary
cal.add(Calendar.DAY_OF_WEEK, 1);
}
}
打印输出:
1: Sunday, 1 December 2013
2: Monday, 2 December 2013
3: Tuesday, 3 December 2013
4: Wednesday, 4 December 2013
5: Thursday, 5 December 2013
6: Friday, 6 December 2013
7: Saturday, 7 December 2013