Java - How to calculate the first and last day of each week

前端 未结 11 853
难免孤独
难免孤独 2020-12-05 05:16

I\'m trying to create a weekly calendar that looks like this: http://dhtmlx.com/docs/products/dhtmlxScheduler/sample_basic.html

How can I calculate every week date?

相关标签:
11条回答
  • 2020-12-05 06:06
        Calendar startCal = Calendar.getInstance();
        startCal.setTimeInMillis(startDate);
        Calendar endCal = Calendar.getInstance();
        endCal.setTimeInMillis(endDate);
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MMMM-yyyy");
        while (startCal.before(endCal)) {
            int weekNumber = startCal.get(Calendar.WEEK_OF_YEAR);
            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
            cal.set(Calendar.WEEK_OF_YEAR, weekNumber);
            Date sunday = cal.getTime();
            Log.d("sunday", "" + sdf.format(sunday));
            cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
            cal.set(Calendar.WEEK_OF_YEAR, weekNumber);
            Date saturday = cal.getTime();
            Log.d("saturday", "" + sdf.format(saturday));
            weekNumber = weekNumber + 1;
            startCal.set(Calendar.WEEK_OF_YEAR, weekNumber);
    
        }
    
    0 讨论(0)
  • 2020-12-05 06:11

    I recommend that you use Joda Time library. Gregorian Calendar class has weekOfWeekyear and dayOfWeek methods.

    0 讨论(0)
  • 2020-12-05 06:13

    I guess this does what you want:

    // Get calendar set to current date and time
    Calendar c = Calendar.getInstance();
    
    // Set the calendar to monday of the current week
    c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    
    // Print dates of the current week starting on Monday
    DateFormat df = new SimpleDateFormat("EEE dd/MM/yyyy");
    for (int i = 0; i < 7; i++) {
        System.out.println(df.format(c.getTime()));
        c.add(Calendar.DATE, 1);
    }
    
    0 讨论(0)
  • 2020-12-05 06:15

    If you know which day it is (Friday) and the current date (June 11), you can calculate the other days in this week.

    0 讨论(0)
  • 2020-12-05 06:18

    Java.time

    Using java.time library built into Java 8:

    import java.time.DayOfWeek;
    import java.time.LocalDate;
    import static java.time.temporal.TemporalAdjusters.previousOrSame;
    import static java.time.temporal.TemporalAdjusters.nextOrSame;
    
    LocalDate now = LocalDate.now(); # 2015-11-23
    LocalDate first = now.with(previousOrSame(DayOfWeek.MONDAY)); # 2015-11-23
    LocalDate last = now.with(nextOrSame(DayOfWeek.SUNDAY)); # 2015-11-29
    

    You can iterate over DayOfWeek.values() to get all current week days

    DayOfWeek.values(); # Array(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY)
    for (DayOfWeek day: DayOfWeek.values()) {
        System.out.print(first.with(nextOrSame(day)));
    } # 2015-11-23, 2015-11-24, 2015-11-25, 2015-11-26, 2015-11-27, 2015-11-28, 2015-11-29
    
    0 讨论(0)
提交回复
热议问题