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

import java.util.*;
import java.time.*;
import java.time.temporal.*;
import java.time.format.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
        LocalDate dt = LocalDate.of(2000, 1, 1);
        printWeekFields(dt, WeekFields.ISO);
        printWeekFields(dt, WeekFields.of(DayOfWeek.SUNDAY, 1));
    }

    static void printWeekFields(LocalDate dt, WeekFields wf) {
        System.out.println("\n-------------\nCampos para " + dt + " (primeiro dia da semana: "
                        + wf.getFirstDayOfWeek().getDisplayName(TextStyle.FULL, new Locale("pt", "BR")) + ", mínimo de dias na primeira semana: "
                        + wf.getMinimalDaysInFirstWeek() + ")");
        System.out.println("semana " + dt.get(wf.weekOfWeekBasedYear()) + " do week-based year " + dt.get(wf.weekBasedYear()));
        System.out.println("semana dentro do mês (usando a definição de semana do WeekFields): " + dt.get(wf.weekOfMonth()));
        System.out.println("semana do mês (usando o dia 1 como o início da primeira semana): " + dt.get(ChronoField.ALIGNED_WEEK_OF_MONTH));
    }
}