Obter o último dia do mês ou do ano em Java

Postado em por Wolmir Cezer Garbin em Java | 341 Visualizações
Última atualização em:

Veja neste post como obter o último dia do Mês em java e de bonús como obter a última data do ano

Todo mundo tem algo para vender, AnuncieOn.com o melhor site de anúncios grátis de todo o Brasil. ABRIR

Apesar de ser relativamente simples, esta é uma dúvida frequênte. Para resolver, vou mostrar uma solução usando o Calendar para quem usa java 6 e usando o LocalDate ou LocalDateTime para quem estiver usando java 8 ou superior.

Última data do mês com Calendar

Para obter a última data do mês em java usando o Calendar, use:

Calendar instance = Calendar.getInstance();
instance.set(Calendar.MONTH, 8);
instance.set(Calendar.DAY_OF_MONTH, instance.getActualMaximum(Calendar.DAY_OF_MONTH));

System.out.println( new SimpleDateFormat("dd/MM/yyyy").format(instance.getTime()));

A saída será 30/09/2018, considenrando que o ano será sempre o ano corrente.

Note que criamos uma instância de Calendar, setamos o mês 9 na instância, usando o método getActualMaximum( [...] ) obtemos o último dia do mês para adicionar a instância e por fim, imprimimos o resultado.

Última data do ano com Calendar

Para a última data do ano basta adicionar o mês 12 ao setar o mês na instância do Calendar, veja:

instance.set(Calendar.MONTH, 11);

Com isso obteremos a última data do ano.

Veja o código completo:

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Main {

    public static void main(String[] args) {
        Calendar instance = Calendar.getInstance();
        instance.set(Calendar.MONTH, 8);
        instance.set(Calendar.DAY_OF_MONTH, instance.getActualMaximum(Calendar.DAY_OF_MONTH));

        System.out.println( "Última data do mês: "+ new SimpleDateFormat("dd/MM/yyyy").format(instance.getTime()));

        instance.set(Calendar.YEAR, 2018);
        instance.set(Calendar.MONTH, 11);
        instance.set(Calendar.DAY_OF_MONTH, instance.getActualMaximum(Calendar.DAY_OF_MONTH));

        System.out.println( "Última data do ano: "+ new SimpleDateFormat("dd/MM/yyyy").format(instance.getTime()));
    }
}

A saída será a seguinte:

Última data do mês: 30/09/2018
Última data do ano: 31/12/2018


Última data do mês com LocalDate ou LocalDateTime

Para obter a última data do mês em java 8 ou superior usando o LocalDate ou LocalDateTime, use:

LocalDate localDate = LocalDate.now().withMonth(9).with(TemporalAdjusters.lastDayOfMonth());
System.out.println( localDate.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));

A saída será 30/09/2018, considenrando que o ano será sempre o ano corrente.

Note que a data corrente usando LocalDate.now(), setamos o mês 9 e usando o TemporalAdjusters.lastDayOfMonth() obtemos o último dia do mês para adicionar a instância e por fim, imprimimos o resultado usando DateTimeFormatter.

Última data do ano com LocalDate ou LocalDateTime

Para a última data do ano basta adicionar o mês 12 ao setar o mês na instância, veja:

LocalDate.now().withMonth(12);

Com isso obteremos a última data do ano.

Veja o código completo:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;

public class Main {

    public static void main(String[] args) {
        LocalDate localDate = LocalDate.now().withMonth(9).with(TemporalAdjusters.lastDayOfMonth());
        System.out.println( "Última data do mês: "+ localDate.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));

        localDate = LocalDate.now().withMonth(12).with(TemporalAdjusters.lastDayOfMonth());
        System.out.println( "Última data do ano: "+ localDate.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
    }
}

A saída será a seguinte:

Última data do mês: 30/09/2018
Última data do ano: 31/12/2018

Note que para usar LocalDateTime basta alterar o LocalDate para LocalDateTime. Todo o código permanece o mesmo.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

FIQUE POR DENTRO

Receba as novidades todo mês em seu e-mail!

Apoiadores


Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar