Obter o último dia do mês ou do ano em Java
Veja neste post como obter o último dia do Mês em java e de bonús como obter a última data do ano
Última atualização em: | 16486 Visualizações
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étodogetActualMaximum( [...] )
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 oTemporalAdjusters.lastDayOfMonth()
obtemos o último dia do mês para adicionar a instância e por fim, imprimimos o resultado usandoDateTimeFormatter
.
Ú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 oLocalDate
paraLocalDateTime
. Todo o código permanece o mesmo.
Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.