我正在尝试从星期日到下一个星期日的8天航班。

我现在实现的方式是显示从表单中选择的日期开始的7天。

// set up calendar for sunday
Calendar sunday = Calendar.getInstance();
sunday.setTime(form.getDate());
sunday.add(Calendar.DAY_OF_WEEK, -1 * (sunday.get(Calendar.DAY_OF_WEEK) - 1));

//set up calendar for next saturday
Calendar saturday = Calendar.getInstance();
saturday.setTime(sunday.getTime());
saturday.add(Calendar.DAY_OF_WEEK, 7);


由于DAY_OF_WEEK的最大值为7,我需要代替使用什么?
我尝试更改此行:

saturday.add(Calendar.DAY_OF_WEEK, 7);


到以下一个:

saturday.add(Calendar.DATE, 8);


我已经尝试过几次换衣服,但是没有运气。
 有什么建议吗?

最佳答案

尝试使用Calendar.DAY_OF_YEAR

import java.text.*;
import java.util.*;

DateFormat dateFormat = new SimpleDateFormat("EEE, MMM dd, yyyy hh:mm:ss a z");
Calendar sunday = new GregorianCalendar();

sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // Set day of week to Sunday.

System.out.println(dateFormat.format(sunday.getTime()));

sunday.add(Calendar.DAY_OF_YEAR, 7); // Add seven days.

System.out.println(dateFormat.format(sunday.getTime()));


输出量

Sun, Dec 04, 2016 11:47:32 PM EST
Sun, Dec 11, 2016 11:47:32 PM EST




您可以通过制作副本来创建新的日历对象,而无需修改现有的日历对象。

import java.text.*;
import java.util.*;

public class CalendarUtils {
    public static void main(String[] args) {
        Calendar sunday = CalendarUtils.getThisSundaysDate();
        Calendar saturday = CalendarUtils.daysFrom(sunday, 6);

        CalendarUtils.printDates(sunday, saturday);
    }

    public static Calendar getThisSundaysDate() {
        Calendar sunday = new GregorianCalendar();
        sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        return sunday;
    }

    public static Calendar daysFrom(Calendar cal, int days) {
        Calendar newCal = copyCalendar(cal);
        newCal.add(Calendar.DAY_OF_YEAR, days);
        return newCal;
    }

    public static Calendar copyCalendar(Calendar cal) {
        Calendar copy = new GregorianCalendar();
        copy.setTime(cal.getTime());
        return copy;
    }

    public static void printDates(Calendar from, Calendar to) {
        DateFormat dateFormat = new SimpleDateFormat("EEE, MMMM dd, yyyy hh:mm:ss a z");

        System.out.println(dateFormat.format(from.getTime()));
        System.out.println(dateFormat.format(to.getTime()));
    }
}

关于java - 星期日至星期日的日历,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40979082/

10-13 09:11