¿Cómo obtienes Horas y Minutos desde entonces Date.getHoursy te Date.getMinutesdesaprobaron? Los ejemplos que encontré en la búsqueda de Google utilizaron los métodos obsoletos.
Intente usar Joda Time en lugar de las clases estándar java.util.Date. La biblioteca Joda Time tiene una API mucho mejor para manejar fechas.
DateTime dt =newDateTime();// current timeint month = dt.getMonth();// gets the current monthint hours = dt.getHourOfDay();// gets hour of day
Consulte esta pregunta para conocer los pros y los contras del uso de la biblioteca Joda Time.
Joda Time también se puede incluir en alguna versión futura de Java como componente estándar, consulte JSR-310 .
Si debe usar las clases tradicionales java.util.Date y java.util.Calendar, consulte sus JavaDoc para obtener ayuda ( java.util.Calendar y java.util.Date ).
Puede usar las clases tradicionales como esta para recuperar campos de una instancia de Date dada.
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!
Esta clase terrible fue suplantada hace años por las clases modernas de java.time , con la adopción de JSR 310. Use en su ZonedDateTimelugar.
Basil Bourque
58
java.time
Si bien soy fanático de Joda-Time , Java 8 presenta el paquete java.time , que finalmente es una solución estándar de Java que vale la pena. Lea este artículo, Java SE 8 Date and Time , para obtener una buena cantidad de información sobre java.time fuera de las horas y minutos.
Esta es la mejor respuesta. Es posible que desee para proporcionar la zona horaria explícita para recordar al lector y se que esta es una operación delicada zona horaria: LocalDateTime.now(ZoneId.of("Asia/Manilla")). Lea now()solo una vez por coherencia (el tiempo pasará entre las dos llamadas). Si la fecha es realmente irrelevante, LocalTimetambién funciona.
Ole VV
1
Gracias por esto. ¡De alguna manera, HE PERDIDO esta maravillosa clase incorporada durante mucho tiempo!
Chrips
El comentario de Ole VV es correcto. Pero aún mejor, use ZonedDateTimeclass en lugar de LocalDateTime. Con LocalDateTimeusted está descartando información valiosa de zona horaria sin ningún motivo, sin ganar nada.
Basil Bourque
Útil si no tiene que ser compatible con versiones anteriores. Lamentablemente, no es adecuado si está escribiendo para Android y admite versiones anteriores de API (o en cualquier otro caso cuando Java 8 no siempre está disponible).
M_M
@M_M Para Java 6 y 7, la mayor parte del java.time funcionalidad se back-portados en el ThreeTen-Backport biblioteca. Más adaptado a los primeros Android en ThreeTenABP . Para enlaces, vea la última sección de mi respuesta .
Basil Bourque
36
Primero, importe java.util.Calendar
Calendar now =Calendar.getInstance();System.out.println(now.get(Calendar.HOUR_OF_DAY)+":"+ now.get(Calendar.MINUTE));
La respuesta de JD es buena pero no óptima. Esa respuesta usa la LocalDateTimeclase. Sin ningún concepto de zona horaria o desplazamiento desde UTC, esa clase no puede representar un momento.
ZoneId z =ZoneID.of("America/Montreal");ZonedDateTime zdt =ZonedDateTime.now( z );
Especificar zona horaria
Si omite el ZoneIdargumento, uno se aplica implícitamente en tiempo de ejecución utilizando la zona horaria predeterminada actual de la JVM.
Así que esto:
ZonedDateTime.now()
... es lo mismo que esto:
ZonedDateTime.now(ZoneId.systemDefault())
Es mejor ser explícito, pasando su zona horaria deseada / esperada. El valor predeterminado puede cambiar en cualquier momento durante el tiempo de ejecución.
Si es crítico, confirme la zona horaria con el usuario.
Hora-minuto
Interrogar el ZonedDateTimepor la hora y los minutos.
int hour = zdt.getHour();int minute = zdt.getMinute();
LocalTime
Si desea solo la hora del día sin la zona horaria, extraiga LocalTime.
LocalTime lt = zdt.toLocalTime();
O salte por ZonedDateTimecompleto, yendo directamente a 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).
Para obtener más información, consulte el Tutorial de Oracle . Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .
Puede intercambiar objetos java.time directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. No hay necesidad de cadenas, no hay necesidad de java.sql.*clases.
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuarter, y más .
Prueba Calender. Use getInstance para obtener un Calender-Object. Luego use setTime para establecer la Fecha requerida. Ahora puede usar get (int field) con la constante apropiada como HOUR_OF_DAY más o menos para leer los valores que necesita.
Duplicar. Este enfoque ya estaba cubierto en la respuesta de JD .
Basil Bourque
Es eso java.sql.Time? Ciertamente no hay ninguna razón para poner esa clase obsoleta en juego cuando tienesjava.time.LocalTime . Eres demasiado complicado.
Ole VV
Parece que getMinutes()ha quedado en desuso (estoy usando Java 1.8) y ha sido reemplazado porCalendar.get(Calendar.MINUTE)
Saltz3
3
Una forma más de obtener minutos y horas es mediante SimpleDateFormat.
Tenía miedo de agregar otra biblioteca a mi proyecto grueso, pero es fácil, rápido, inteligente e increíble. Además, juega bien con el código existente, hasta cierto punto.
Si bien no recomendaría hacerlo, creo que vale la pena señalar que, aunque muchos métodos en java.util.Date han quedado en desuso, todavía funcionan. En situaciones triviales, puede estar bien usarlos. Además, java.util.Calendar es bastante lento, por lo que getMonth y getYear on Date podrían ser más rápidos.
import java.util.*Puede gethour y minutos usando la clase calendario y formateador. Calendar cal = Calendar.getInstance()y Formatter fmt=new Formatter()establecer un formato para mostrar horas y minutos fmt.format("%tl:%M",cal,cal)y la System.out.println(fmt) salida de impresión se muestra10:12
java.util.Date
,java.util.Calendar
yjava.text.SimpleDateFormat
ahora son heredadas , suplantadas por las clases java.time integradas en Java 8 y posteriores. Ver Tutorial de Oracle .Respuestas:
Intente usar Joda Time en lugar de las clases estándar java.util.Date. La biblioteca Joda Time tiene una API mucho mejor para manejar fechas.
Consulte esta pregunta para conocer los pros y los contras del uso de la biblioteca Joda Time.
Joda Time también se puede incluir en alguna versión futura de Java como componente estándar, consulte JSR-310 .
Si debe usar las clases tradicionales java.util.Date y java.util.Calendar, consulte sus JavaDoc para obtener ayuda ( java.util.Calendar y java.util.Date ).
Puede usar las clases tradicionales como esta para recuperar campos de una instancia de Date dada.
fuente
Del Javadoc para Date.getHours
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)
Entonces usa
y el equivalente para getMinutes.
fuente
ZonedDateTime
lugar.java.time
Si bien soy fanático de Joda-Time , Java 8 presenta el paquete java.time , que finalmente es una solución estándar de Java que vale la pena. Lea este artículo, Java SE 8 Date and Time , para obtener una buena cantidad de información sobre java.time fuera de las horas y minutos.
En particular, mira la
LocalDateTime
clase.Horas y minutos:
fuente
LocalDateTime.now(ZoneId.of("Asia/Manilla"))
. Leanow()
solo una vez por coherencia (el tiempo pasará entre las dos llamadas). Si la fecha es realmente irrelevante,LocalTime
también funciona.ZonedDateTime
class en lugar deLocalDateTime
. ConLocalDateTime
usted está descartando información valiosa de zona horaria sin ningún motivo, sin ganar nada.Primero, importe java.util.Calendar
fuente
tl; dr
... o ...
ZonedDateTime
La respuesta de JD es buena pero no óptima. Esa respuesta usa la
LocalDateTime
clase. Sin ningún concepto de zona horaria o desplazamiento desde UTC, esa clase no puede representar un momento.Mejor de usar
ZonedDateTime
.Especificar zona horaria
Si omite el
ZoneId
argumento, uno se aplica implícitamente en tiempo de ejecución utilizando la zona horaria predeterminada actual de la JVM.Así que esto:
... es lo mismo que esto:
Es mejor ser explícito, pasando su zona horaria deseada / esperada. El valor predeterminado puede cambiar en cualquier momento durante el tiempo de ejecución.
Si es crítico, confirme la zona horaria con el usuario.
Hora-minuto
Interrogar el
ZonedDateTime
por la hora y los minutos.LocalTime
Si desea solo la hora del día sin la zona horaria, extraiga
LocalTime
.O salte por
ZonedDateTime
completo, yendo directamente aLocalTime
.tipos java.time
Sobre java.time
El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como
java.util.Date
,Calendar
, ySimpleDateFormat
.Para obtener más información, consulte el Tutorial de Oracle . Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .
El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .
Puede intercambiar objetos java.time directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. No hay necesidad de cadenas, no hay necesidad de
java.sql.*
clases.¿Dónde obtener las clases java.time?
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como
Interval
,YearWeek
,YearQuarter
, y más .fuente
Prueba Calender. Use getInstance para obtener un Calender-Object. Luego use setTime para establecer la Fecha requerida. Ahora puede usar get (int field) con la constante apropiada como HOUR_OF_DAY más o menos para leer los valores que necesita.
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html
fuente
Estas funciones devolverán valores int en horas y minutos.
fuente
java.sql.Time
? Ciertamente no hay ninguna razón para poner esa clase obsoleta en juego cuando tienesjava.time.LocalTime
. Eres demasiado complicado.getMinutes()
ha quedado en desuso (estoy usando Java 1.8) y ha sido reemplazado porCalendar.get(Calendar.MINUTE)
Una forma más de obtener minutos y horas es mediante SimpleDateFormat.
fuente
java.util.Date
,java.util.Calendar
yjava.text.SimpleDateFormat
ahora son heredadas , suplantadas por las clases java.time integradas en Java 8 y posteriores. Ver Tutorial de Oracle .Recomendaría mirar ad joda time. http://www.joda.org/joda-time/
Tenía miedo de agregar otra biblioteca a mi proyecto grueso, pero es fácil, rápido, inteligente e increíble. Además, juega bien con el código existente, hasta cierto punto.
fuente
Si bien no recomendaría hacerlo, creo que vale la pena señalar que, aunque muchos métodos en java.util.Date han quedado en desuso, todavía funcionan. En situaciones triviales, puede estar bien usarlos. Además, java.util.Calendar es bastante lento, por lo que getMonth y getYear on Date podrían ser más rápidos.
fuente
Esto funciona para mi
fuente
import java.util.*
Puede gethour y minutos usando la clase calendario y formateador.Calendar cal = Calendar.getInstance()
yFormatter fmt=new Formatter()
establecer un formato para mostrar horas y minutosfmt.format("%tl:%M",cal,cal)
y laSystem.out.println(fmt)
salida de impresión se muestra10:12
fuente