Eu tenho um objeto Date em Java armazenado como o tipo Date do Java.
Eu também tenho uma data de criação do calendário gregoriano. A data do calendário gregoriano não possui parâmetros e, portanto, é uma instância da data de hoje (e da hora?).
Com a data do java, desejo obter o ano, mês, dia, hora, minuto e segundos do tipo de data do java e comparar a data do calendário gregoriano.
Vi que no momento a data do Java é armazenada como longa e os únicos métodos disponíveis parecem apenas escrever a longa como uma string de data formatada. Existe uma maneira de acessar Ano, mês, dia, etc?
Vi que os getYear()
, getMonth()
métodos, etc. para Date
classe foram reprovados. Eu queria saber qual é a melhor prática para usar a instância do Java Date que tenho com a GregorianCalendar
data.
Meu objetivo final é fazer um cálculo de data para que eu possa verificar se a data do Java está dentro de tantas horas, minutos etc. da data e hora de hoje.
Eu ainda sou um novato em Java e estou ficando um pouco intrigado com isso.
fonte
Date.getYear()
. Sofre de problemas (que eu não sei).Date.getYear()
uma vez analisou minha data em 30/06/2017 e retornou meu ano como 117. Veja onde aterrou, dois mil anos atrás. Mas quando imprimo simplesmente o Objeto de Data, a Saída estava BemDate.getYear();
.Respostas:
Use algo como:
Cuidado, meses começam em 0, não 1.
Edit : Desde o Java 8, é melhor usar java.time.LocalDate em vez de java.util.Calendar . Veja esta resposta para saber como fazê-lo.
fonte
cal.add(Calendar.DAY_OF_MONTH, -48)
aritmética diurna em objetos do Calendário. E você pode comparar dois objetos de calendário usandocal.compareTo(anotherCal)
.Com o Java 8 e posterior, você pode converter o objeto Date em um objeto LocalDate e obter facilmente o ano, mês e dia.
Observe que
getMonthValue()
retorna um valor int de 1 a 12.fonte
LocalDate
Java 8 é a melhor solução que economiza seu tempo, outra solução que utilizaCalendar
eDate
está cheia de problemas.Você pode fazer algo assim, isso explicará como a
Date
classe funciona.fonte
mm
indicam minutos, letras maiúsculasMM
significa mês do ano.EDIT: A saída para
date
=Fri Jun 15 09:20:21 CEST 2018
é:fonte
fonte
fonte
java.util.Date
,java.util.Calendar
ejava.text.SimpleDateFormat
estão agora legado , suplantado pelos java.time classes internas em Java 8 e posterior. Consulte o Tutorial da Oracle .getYearMonthDay2 (a solução do calendário) é dez vezes mais rápido. Agora você tem o MM dd 00 00 00 e, em seguida, compare usando date.compare
fonte
Pode ser mais fácil
fonte
Monte cuidadosamente o início de 0 a 1. E também o Calendário use pm como am, de modo que seja muito cuidadoso ao usar Horas e minutos.
fonte