Como você recebe Horas e Minutos desde então Date.getHours
e Date.getMinutes
foi preterido? Os exemplos que encontrei na pesquisa do Google usaram os métodos preteridos.
Como você recebe Horas e Minutos desde então Date.getHours
e Date.getMinutes
foi preterido? Os exemplos que encontrei na pesquisa do Google usaram os métodos preteridos.
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.
DateTime dt = new DateTime(); // current time
int month = dt.getMonth(); // gets the current month
int 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 = new Date(); // given date
Calendar 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!
Do Javadoc para Date.getHours
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)
Então use
Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
e o equivalente para getMinutes.
ZonedDateTime
vez disso.
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:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
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, LocalTime
também funciona.
ZonedDateTime
classe em vez de LocalDateTime
. Com LocalDateTime
você, você descarta informações valiosas de fuso horário sem motivo, sem nada ganho.
ZonedDateTime.now().getHour()
... ou ...
LocalTime.now().getHour()
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
.
ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
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:
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.
Interrogue a ZonedDateTime
hora 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 ZonedDateTime
completamente, 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).
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
, e SimpleDateFormat
.
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 .
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
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();
Essas funções retornarão valores int em horas e minutos.
java.sql.Time
? Certamente não há razão alguma para colocar em jogo essa classe desatualizada java.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.
SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())
SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
java.util.Date
, java.util.Calendar
, e java.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.
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 .