¿Cómo obtienes Horas y Minutos desde entonces Date.getHours
y te Date.getMinutes
desaprobaron? Los ejemplos que encontré en la búsqueda de Google utilizaron los métodos obsoletos.
¿Cómo obtienes Horas y Minutos desde entonces Date.getHours
y te Date.getMinutes
desaprobaron? Los ejemplos que encontré en la búsqueda de Google utilizaron los métodos obsoletos.
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.
DateTime dt = new DateTime(); // current time
int month = dt.getMonth(); // gets the current month
int 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 = 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!
Del Javadoc para Date.getHours
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)
Entonces usa
Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
y el equivalente para getMinutes.
ZonedDateTime
lugar.
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:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
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, LocalTime
también funciona.
ZonedDateTime
class en lugar de LocalDateTime
. Con LocalDateTime
usted está descartando información valiosa de zona horaria sin ningún motivo, sin ganar nada.
ZonedDateTime.now().getHour()
... o ...
LocalTime.now().getHour()
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
.
ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
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:
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.
Interrogar el ZonedDateTime
por 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 ZonedDateTime
completo, 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).
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
, y SimpleDateFormat
.
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 .
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
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();
Estas funciones devolverán valores int en horas y minutos.
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.
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
y java.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.
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 .