Como você recebe Horas e Minutos desde então Date.getHourse Date.getMinutesfoi preterido? Os exemplos que encontrei na pesquisa do Google usaram os métodos preteridos.
Tente usar o Joda Time em vez das classes java.util.Date padrão. A biblioteca Joda Time possui uma API muito melhor para lidar com datas.
DateTime dt =newDateTime();// current timeint month = dt.getMonth();// gets the current monthint hours = dt.getHourOfDay();// gets hour of day
Veja esta pergunta para prós e contras do uso da biblioteca Joda Time.
O Joda Time também pode ser incluído em alguma versão futura do Java como componente padrão, consulte JSR-310 .
Se você deve usar as classes tradicionais java.util.Date e java.util.Calendar, consulte o JavaDoc para obter ajuda ( java.util.Calendar e java.util.Date ).
Você pode usar as classes tradicionais como esta para buscar campos de uma determinada instância de Data.
Date date =newDate();// given dateCalendar calendar =GregorianCalendar.getInstance();// creates a new calendar instance
calendar.setTime(date);// assigns calendar to given date
calendar.get(Calendar.HOUR_OF_DAY);// gets hour in 24h format
calendar.get(Calendar.HOUR);// gets hour in 12h format
calendar.get(Calendar.MONTH);// gets month number, NOTE this is zero based!
Essa classe terrível foi substituída anos atrás pelas modernas classes java.time , com a adoção do JSR 310. Use em ZonedDateTimevez disso.
Basil Bourque
58
java.time
Enquanto eu sou fã do Joda-Time , o Java 8 apresenta o pacote java.time , que finalmente é uma solução padrão do Java que vale a pena! Leia este artigo, Data e hora do Java SE 8 , para obter uma boa quantidade de informações sobre java.time fora de horas e minutos.
Esta é a melhor resposta. Você pode querer fornecer fuso horário explícito para lembrar ao leitor e de si mesmo que esta é uma operação delicada fuso horário: LocalDateTime.now(ZoneId.of("Asia/Manilla")). Leia now()apenas uma vez para obter consistência (o tempo passará entre as duas chamadas). Se a data é realmente irrelevante, LocalTimetambém funciona.
Ole VV
1
Obrigado por isso. De alguma forma eu perdi esse maravilhoso construído em sala de aula por um longo tempo!
Chrips #
O comentário de Ole VV está correto. Mas, melhor ainda, use ZonedDateTimeclasse em vez de LocalDateTime. Com LocalDateTimevocê, você descarta informações valiosas de fuso horário sem motivo, sem nada ganho.
Basil Bourque
Útil se você não precisar ser compatível com versões anteriores. Lamentavelmente, não é adequado se você estiver escrevendo para Android e suportando versões mais antigas da API (ou em qualquer outro caso em que o Java 8 nem sempre esteja disponível).
M_M 23/07/19
@M_M Para Java 6 e 7, a maior parte da funcionalidade java.time é portada na biblioteca ThreeTen-Backport . Mais adaptado ao Android inicial no ThreeTenABP . Para obter links, consulte a última seção da minha resposta .
Basil Bourque 27/03
36
Primeiro, importe java.util.Calendar
Calendar now =Calendar.getInstance();System.out.println(now.get(Calendar.HOUR_OF_DAY)+":"+ now.get(Calendar.MINUTE));
A resposta de JD é boa, mas não ótima. Essa resposta usa a LocalDateTimeclasse Na falta de qualquer conceito de fuso horário ou deslocamento do UTC, essa classe não pode representar um momento.
ZoneId z =ZoneID.of("America/Montreal");ZonedDateTime zdt =ZonedDateTime.now( z );
Especifique o fuso horário
Se você omitir o ZoneIdargumento, um será aplicado implicitamente no tempo de execução usando o fuso horário padrão atual da JVM.
Então, é isso:
ZonedDateTime.now()
… É o mesmo que isto:
ZonedDateTime.now(ZoneId.systemDefault())
Melhor ser explícito, passando o fuso horário desejado / esperado. O padrão pode mudar a qualquer momento durante o tempo de execução.
Se crítico, confirme o fuso horário com o usuário.
Hora-minuto
Interrogue a ZonedDateTimehora e o minuto.
int hour = zdt.getHour();int minute = zdt.getMinute();
LocalTime
Se você deseja apenas a hora do dia sem o fuso horário, extraia LocalTime.
LocalTime lt = zdt.toLocalTime();
Ou pule ZonedDateTimecompletamente, indo diretamente para LocalTime.
LocalTime lt =LocalTime.now( z );// Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).
Você pode trocar objetos java.time diretamente com seu banco de dados. Use um driver JDBC compatível com JDBC 4.2 ou posterior. Não há necessidade de strings, não há necessidade de java.sql.*classes.
O projeto ThreeTen-Extra estende java.time com classes adicionais. Este projeto é um campo de prova para possíveis adições futuras ao java.time. Você pode encontrar algumas classes úteis aqui, como Interval, YearWeek, YearQuarter, e mais .
Experimente o Calender. Use getInstance para obter um Calender-Object. Em seguida, use setTime para definir a data necessária. Agora você pode usar get (int field) com a constante apropriada, como HOUR_OF_DAY ou mais, para ler os valores necessários.
Eu tinha medo de adicionar outra biblioteca ao meu projeto espesso, mas é fácil, rápido, inteligente e incrível. Além disso, ele funciona bem com o código existente, até certo ponto.
Embora eu não recomende isso, acho que vale ressaltar que, embora muitos métodos em java.util.Date tenham sido preteridos, eles ainda funcionam. Em situações triviais, pode ser bom usá-las. Além disso, o java.util.Calendar é bastante lento, portanto, getMonth e getYear on Date podem ser úteis mais rapidamente.
import java.util.*Você pode obter horas e minutos usando o calendário e a classe do formatador. Calendar cal = Calendar.getInstance()ee Formatter fmt=new Formatter()defina um formato para exibir horas e minutos fmt.format("%tl:%M",cal,cal)e os System.out.println(fmt) resultados da impressão , como10:12
java.util.Date
,java.util.Calendar
, ejava.text.SimpleDateFormat
são agora legado , suplantado pelos java.time classes internas em Java 8 e posterior. Consulte o Tutorial da Oracle .Respostas:
Tente usar o Joda Time em vez das classes java.util.Date padrão. A biblioteca Joda Time possui uma API muito melhor para lidar com datas.
Veja esta pergunta para prós e contras do uso da biblioteca Joda Time.
O Joda Time também pode ser incluído em alguma versão futura do Java como componente padrão, consulte JSR-310 .
Se você deve usar as classes tradicionais java.util.Date e java.util.Calendar, consulte o JavaDoc para obter ajuda ( java.util.Calendar e java.util.Date ).
Você pode usar as classes tradicionais como esta para buscar campos de uma determinada instância de Data.
fonte
Do Javadoc para Date.getHours
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)
Então use
e o equivalente para getMinutes.
fonte
ZonedDateTime
vez disso.java.time
Enquanto eu sou fã do Joda-Time , o Java 8 apresenta o pacote java.time , que finalmente é uma solução padrão do Java que vale a pena! Leia este artigo, Data e hora do Java SE 8 , para obter uma boa quantidade de informações sobre java.time fora de horas e minutos.
Em particular, olhe para a
LocalDateTime
classe.Horas e minutos:
fonte
LocalDateTime.now(ZoneId.of("Asia/Manilla"))
. Leianow()
apenas uma vez para obter consistência (o tempo passará entre as duas chamadas). Se a data é realmente irrelevante,LocalTime
também funciona.ZonedDateTime
classe em vez deLocalDateTime
. ComLocalDateTime
você, você descarta informações valiosas de fuso horário sem motivo, sem nada ganho.Primeiro, importe java.util.Calendar
fonte
tl; dr
... ou ...
ZonedDateTime
A resposta de JD é boa, mas não ótima. Essa resposta usa a
LocalDateTime
classe Na falta de qualquer conceito de fuso horário ou deslocamento do UTC, essa classe não pode representar um momento.Melhor usar
ZonedDateTime
.Especifique o fuso horário
Se você omitir o
ZoneId
argumento, um será aplicado implicitamente no tempo de execução usando o fuso horário padrão atual da JVM.Então, é isso:
… É o mesmo que isto:
Melhor ser explícito, passando o fuso horário desejado / esperado. O padrão pode mudar a qualquer momento durante o tempo de execução.
Se crítico, confirme o fuso horário com o usuário.
Hora-minuto
Interrogue a
ZonedDateTime
hora e o minuto.LocalTime
Se você deseja apenas a hora do dia sem o fuso horário, extraia
LocalTime
.Ou pule
ZonedDateTime
completamente, indo diretamente paraLocalTime
.tipos java.time
Sobre java.time
A estrutura java.time é integrada ao Java 8 e posterior. Essas classes suplantar os velhos problemáticos legados aulas de data e hora, como
java.util.Date
,Calendar
, eSimpleDateFormat
.Para saber mais, consulte o Tutorial do Oracle . E procure Stack Overflow para muitos exemplos e explicações. A especificação é JSR 310 .
O projeto Joda-Time , agora em modo de manutenção , aconselha a migração para as classes java.time .
Você pode trocar objetos java.time diretamente com seu banco de dados. Use um driver JDBC compatível com JDBC 4.2 ou posterior. Não há necessidade de strings, não há necessidade de
java.sql.*
classes.Onde obter as classes java.time?
O projeto ThreeTen-Extra estende java.time com classes adicionais. Este projeto é um campo de prova para possíveis adições futuras ao java.time. Você pode encontrar algumas classes úteis aqui, como
Interval
,YearWeek
,YearQuarter
, e mais .fonte
Experimente o Calender. Use getInstance para obter um Calender-Object. Em seguida, use setTime para definir a data necessária. Agora você pode usar get (int field) com a constante apropriada, como HOUR_OF_DAY ou mais, para ler os valores necessários.
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html
fonte
Essas funções retornarão valores int em horas e minutos.
fonte
java.sql.Time
? Certamente não há razão alguma para colocar em jogo essa classe desatualizadajava.time.LocalTime
. Você é muito complicado.getMinutes()
foi depreciado em (estou usando java 1.8) e foi substituído porCalendar.get(Calendar.MINUTE)
Mais uma maneira de obter minutos e horas é usando SimpleDateFormat.
fonte
java.util.Date
,java.util.Calendar
, ejava.text.SimpleDateFormat
são agora legado , suplantado pelos java.time classes internas em Java 8 e posterior. Consulte o Tutorial da Oracle .Eu recomendaria procurar tempo ad joda. http://www.joda.org/joda-time/
Eu tinha medo de adicionar outra biblioteca ao meu projeto espesso, mas é fácil, rápido, inteligente e incrível. Além disso, ele funciona bem com o código existente, até certo ponto.
fonte
Embora eu não recomende isso, acho que vale ressaltar que, embora muitos métodos em java.util.Date tenham sido preteridos, eles ainda funcionam. Em situações triviais, pode ser bom usá-las. Além disso, o java.util.Calendar é bastante lento, portanto, getMonth e getYear on Date podem ser úteis mais rapidamente.
fonte
Isso funciona para mim
fonte
import java.util.*
Você pode obter horas e minutos usando o calendário e a classe do formatador.Calendar cal = Calendar.getInstance()
eeFormatter fmt=new Formatter()
defina um formato para exibir horas e minutosfmt.format("%tl:%M",cal,cal)
e osSystem.out.println(fmt)
resultados da impressão , como10:12
fonte