Eu preciso receber uma data qualquer e armazená-la. Além disso, também preciso pegar um mês anterior a essa data. A entrada seria o ano, mês e dia. Tentei fazer ao menos a parte de pegar a data através desse código:
Calendar calendar = new GregorianCalendar(anoQualquer, mesQualquer, diaQualquer);
int ano = calendar.get(Calendar.YEAR);
int mes = calendar.get(Calendar.MONTH);
int dia = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("ano: " + ano);
System.out.println("mês: " + mes);
System.out.println("dia: " + dia);
Digamos que o anoQualquer = 2016, o mesQualquer = 10 e o diaQualquer = 31. Como modifico esse código para obter essa data corretamente? Eu sei que não mostra bonitinho porque a contagem dos meses se inicia em 0, mas ainda assim, gostaria de saber se há algum jeito de fazer isso.
Precisa ser com Java antigo? Nao pode ser o Java 8?
Exemplo com Java 8:
import java.time.LocalDate;
import java.time.LocalDateTime;
public class App {
public static void main(String[] args) {
LocalDate ultimoDiaDoAno = LocalDate.of(2016, 12, 31);
System.out.println("Dia anterior ao ultimo dia do ano: " + ultimoDiaDoAno.minusDays(1).toString());
System.out.println("Dia posterior ao ultimo dia do ano: " + ultimoDiaDoAno.plusDays(1).toString());
System.out.println("Mes anterior ao ultimo dia do ano: " + ultimoDiaDoAno.minusMonths(1).toString());
System.out.println("Mes posterior ao ultimo dia do ano: " + ultimoDiaDoAno.plusMonths(1).toString());
}
}
Saida:
Dia anterior ao ultimo dia do ano: 2016-12-30
Dia posterior ao ultimo dia do ano: 2017-01-01
Mes anterior ao ultimo dia do ano: 2016-11-30
Mes posterior ao ultimo dia do ano: 2017-02-28