/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.WeekFields;

import static java.time.temporal.ChronoUnit.WEEKS;


/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main(String[] args) {
	    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss','SSS");
	    LocalDateTime[] startDate = {
	            LocalDateTime.parse("2018-08-24T12:18:06,166", format),
	            LocalDateTime.parse("2018-08-24T12:18:06,166", format),
	            LocalDateTime.parse("2018-08-24T12:18:06,166", format),
	    };
	    LocalDateTime[] endDate = {
	            LocalDateTime.parse("2018-08-24T12:18:06,166", format),
	            LocalDateTime.parse("2018-08-30T12:18:06,166", format),
	            LocalDateTime.parse("2019-08-24T11:18:06,166", format),
	    };
	
	    for (int i = 0; i < startDate.length; i++) {
	        numberOfWeeks(startDate[i], endDate[i]);
	    }
	
	}
	
	public static void numberOfWeeks(LocalDateTime startDate, LocalDateTime endDate) {
	    int addWeek = 0;
	    if (startDate.get(WeekFields.ISO.weekOfYear()) < endDate.get(WeekFields.ISO.weekOfYear())) {
	        addWeek = 1;
	    }
	    long weeks = WEEKS.between(startDate, endDate) + addWeek;//Get the number of weeks in your case (52)
	    List<String> numberWeeks = new ArrayList<>();
	    if (weeks >= 0) {
	        int week = 0;
	        do {
	            //Get the number of week
	            LocalDateTime dt = startDate.plusWeeks(week);
	            int weekNumber = dt.get(WeekFields.ISO.weekOfYear());
	            numberWeeks.add(String.format("%d-W%d", dt.getYear(), weekNumber));
	            week++;
	        } while (week <= weeks);
	    }
	    System.out.println(numberWeeks);
	}
}