关于如何将一周中的当前日期放在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

09-10 07:19
查看更多