Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Java Calendar Diferença entre getMaximum e getActualMaximum

Olá!

Eu tenho um dúvida sobre os métodos getMaximum e getActualMaximum do java.util : Qual a diferença entre eles?

3 respostas
solução!

Olá Felipe, beleza!?

Na sua pergunta você cita o parâmetro "Calendar.MONTH", que em ambos os métodos retornará um número entre 0 e 11(que representa o maior numero do mês para o ano do Calendar, como é de 0 a 11, por isso retorna 11); Se você utilizasse o parâmetro "Calendar.DAY_OF_MONTH" ai sím estaria condizente com sua pergunta... mas vamos a sua resposta:

Analisando a documentação de ambos os métodos temos que o método "getActualMaximum(Calendar.DAY_OF_MONTH)" retornará o maior dia do mês para o mês do Calendar utilizado(que no meu pojo abaixo é Fevereiro de 2019);

Já o método "getMaximum(Calendar.DAY_OF_MONTH)" retornará o maior dia existente, dentre os meses do Calendar, ou seja...retornará 31 no calendário BR, pois é o maior dia existente.

Olha a documentação do java(1.8) para cada método:

getMaximum(Calendar.MONTH):

Returns the maximum value for the given calendar field of this Calendar instance. The maximum value is defined as the largest value returned by the get method for any possible time value. The maximum value depends on calendar system specific parameters of the instance.

Params: field – the calendar field. Returns: the maximum value for the given calendar field. See Also: getMinimum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMinimum(int), getActualMaximum(int) External annotations: @org.intellij.lang.annotations.MagicConstant(intValues = {Calendar.ERA,Calendar.YEAR,Calendar.MONTH,Calendar.WEEK_OF_YEAR,Calendar.WEEK_OF_MONTH,Calendar.DATE,Calendar.DAY_OF_MONTH,Calendar.DAY_OF_YEAR,Calendar.DAY_OF_WEEK,Calendar.DAY_OF_WEEK_IN_MONTH,Calendar.AM_PM,Calendar.HOUR,Calendar.HOUR_OF_DAY,Calendar.MINUTE,Calendar.SECOND,Calendar.MILLISECOND,Calendar.ZONE_OFFSET,Calendar.DST_OFFSET}) < 1.8 >

getActualMaximum(Calendar.MONTH):

Returns the maximum value that the specified calendar field could have, given the time value of this Calendar. For example, the actual maximum value of the MONTH field is 12 in some years, and 13 in other years in the Hebrew calendar system. The default implementation of this method uses an iterative algorithm to determine the actual maximum value for the calendar field. Subclasses should, if possible, override this with a more efficient implementation.

Params: field – the calendar field Returns: the maximum of the given calendar field for the time value of this Calendar Since: 1.2 See Also: getMinimum(int), getMaximum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMinimum(int) External annotations: @org.intellij.lang.annotations.MagicConstant(intValues = {Calendar.ERA,Calendar.YEAR,Calendar.MONTH,Calendar.WEEK_OF_YEAR,Calendar.WEEK_OF_MONTH,Calendar.DATE,Calendar.DAY_OF_MONTH,Calendar.DAY_OF_YEAR,Calendar.DAY_OF_WEEK,Calendar.DAY_OF_WEEK_IN_MONTH,Calendar.AM_PM,Calendar.HOUR,Calendar.HOUR_OF_DAY,Calendar.MINUTE,Calendar.SECOND,Calendar.MILLISECOND,Calendar.ZONE_OFFSET,Calendar.DST_OFFSET}) < 1.8 >


Execute o pojo abaixo e verifique :

import java.util.Calendar;

public class TesteCalendarJava {

    public static void main(String[] args) {

        // create a calendar
        Calendar cal = Calendar.getInstance();

        // get the maximum value that the specified calendar field could have, given the time value of this Calendar.
        int i = cal.getActualMaximum(Calendar.MONTH);
        System.out.println("ActualMaximum month:" + i);

        // get The maximum value is defined as the largest value returned by the get method for any possible time value
        int a = cal.getMaximum(Calendar.MONTH);
        System.out.println("Maximum month:" + a);

        // get the maximum value that the specified calendar field could have, given the time value of this Calendar.
        int i1 = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println("ActualMaximum day:" + i1);

        // get The maximum value is defined as the largest value returned by the get method for any possible time value
        int a1 = cal.getMaximum(Calendar.DAY_OF_MONTH);
        System.out.println("Maximum day:" + a1);
    }
}

Ajudei? me avisa que buscamos solucionar juntos!

Abraço e bons estudos!

Ajudou bastante!

Na correria aqui eu coloquei o static MONTH, mas seria mesmo DAY_OF_MONTH.

Obrigado :)

Show! Fico feliz em ter te ajudado!

Abraço!