2009-05-25 30 views
101

¿Cómo se obtienen horas y minutos desde que se anularon Date.getHours y Date.getMinutes? Los ejemplos que encontré en la búsqueda de Google utilizaron los métodos obsoletos.Java: getMinutes y getHours

Respuesta

72

Desde el Javadoc para Date.getHours

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

a fin de utilizar

Calendar rightNow = Calendar.getInstance(); 
int hour = rightNow.get(Calendar.HOUR_OF_DAY); 

y el equivalente de getMinutes.

+2

Así que ... ¿cómo funciona esto si quiero obtener las horas de una fecha que no corresponde a ahora? – Michael

+0

Ver http://stackoverflow.com/questions/8150155/java-gethours-getminutes-and-getseconds – Mark

33

En primer lugar, la importación java.util.Calendar

Calendar now = Calendar.getInstance(); 
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE)); 
2

Yo recomendaría buscar espacios publicitarios joda. 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 impresionante. Además, funciona bien con el código existente, hasta cierto punto.

145

Intente utilizar Joda Time en lugar de clases java.util.Date estándar. La biblioteca Joda Time tiene una API mucho mejor para manejar las fechas.

DateTime dt = new DateTime(); // current time 
int month = dt.getMonth();  // gets the current month 
int hours = dt.getHourOfDay(); // gets hour of day 

ver este question para 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 tiene que usar las clases tradicionales java.util.Date y java.util.Calendar, ver de su Javadoc de ayuda (java.util.Calendar y java.util.Date).

Puede utilizar las clases tradicionales como esta para recuperar campos de una instancia de fecha determinada.

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! 
1

Mientras yo no recomendaría hacerlo así, creo que es importante señalar que si bien se han desaprobado muchos métodos en java.util.Date, ellos siguen trabajando. En situaciones triviales, puede estar bien usarlos. Además, java.util.Calendar es bastante lento, por lo que getMonth y getYear en Date podrían ser útilmente más rápidos.

0

import java.util.* Puede administrar gethour y minutos usando la clase de calendario y formateador. Calendar cal = Calendar.getInstance() y Formatter fmt=new Formatter() y establecer un formato de hora de visualización y fmt.format("%tl:%M",cal,cal) e imprimir System.out.println(fmt) salida da una hora como 10:12

28

java.time

Mientras soy fan de Joda-Time, Java 8 presenta el paquete java.time que finalmente es una solución 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 horas y minutos.

En particular, observe la clase LocalDateTime.

Horas y minutos:

LocalDateTime.now().getHour(); 
LocalDateTime.now().getMinute(); 
+0

Esta es la mejor respuesta. Es posible que desee proporcionar un huso horario explícito para recordarle al lector y a usted mismo que esta es una operación sensible a la zona horaria: 'LocalDateTime.now (ZoneId.of (" Asia/Manilla "))'. Lea 'now()' solo una vez para consistencia (el tiempo pasará entre las dos llamadas). Si la fecha es realmente irrelevante, 'LocalTime' también funciona. –

1
int hr=Time.valueOf(LocalTime.now()).getHours(); 
int minutes=Time.valueOf(LocalTime.now()).getMinutes(); 

Estas funciones de respuesta INT valores de horas y minutos.

+0

Duplicado. Este enfoque ya estaba cubierto en [Answer by J.D.] (http://stackoverflow.com/a/29270120/642706). –

+0

¿Eso es 'java.sql.Time'? Ciertamente, no hay razón alguna para poner en juego esa clase desactualizada cuando tienes 'java.time.LocalTime'. Eres demasiado complicado. –

1
public static LocalTime time() { 
    LocalTime ldt = java.time.LocalTime.now(); 

    ldt = ldt.truncatedTo(ChronoUnit.MINUTES); 
    System.out.println(ldt); 
    return ldt; 
} 

Esto funciona para mí

+0

Elegante. Es posible que desee explicar por qué funciona. –