Java: getMinutes y getHours

¿Cómo conseguir que las Horas y los Minutos desde Date.getHours y Date.getMinutes tengo en desuso? Los ejemplos que he encontrado en la búsqueda de Google utiliza los obsoletos métodos.

InformationsquelleAutor | 2009-05-25

12 Kommentare

  1. 164

    Trate de usar Joda Tiempo en lugar de la estándar de java.util.Fecha de clases. Joda en la biblioteca de Tiempo tiene mucho mejor API para el manejo de 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 pregunta para los pros y los contras del uso de Joda biblioteca de Tiempo.

    Joda Tiempo también puede ser incluido en alguna futura versión de Java como un componente estándar, consulte JSR-310.


    Si debe utilizar tradicional de java.util.Fecha y java.util.Calendario de clases, consulte a su JavaDoc para ayudar (java.util.Calendario y java.util.Fecha).

    Puede utilizar las clases tradicionales como este para recuperar los campos, desde la Fecha de la instancia.

    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!
    • Pregunta: Ahora que Java 8 se ha rodado con LocalDateTime, ¿hay alguna razón usted debe utilizar Joda Vez más LocalDateTime?
    • Las opiniones difieren. Joda-el Tiempo que oficialmente se recomienda el uso de java.el tiempo en su lugar.
  2. 90

    Desde el Javadoc de la Fecha.getHours

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

    Para uso

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

    y el equivalente para getMinutes.

    • Así que… ¿cómo funciona esto y si quiero las horas a partir de una Fecha que no corresponde a la de ahora?
    • Consulte stackoverflow.com/questions/8150155/…
    • Esta terrible clase fue suplantado años por la moderna java.tiempo las clases, con la adopción de JSR 310. Uso ZonedDateTime lugar.
  3. 56

    java.tiempo

    Mientras que yo soy un fan de Joda-El Tiempo, Java 8 introduce la java.tiempo paquete que es, finalmente, una pena Java estándar de la solución! La lectura de este artículo, Java SE 8 Fecha y Hora, para una buena cantidad de información sobre java.tiempo fuera de las horas y los minutos.

    En particular, mira el LocalDateTime clase.

    Horas y minutos:

    LocalDateTime.now().getHour();
    LocalDateTime.now().getMinute();
    • Esta es la mejor respuesta. Es posible que desee proporcionar explícito de zona horaria para recordar al lector y a ti mismo de que esta es una zona de tiempo de la operación sensible: LocalDateTime.now(ZoneId.of("Asia/Manilla")). Leer now() sólo una vez por la coherencia (tiempo tiene que pasar entre las dos llamadas). Si la fecha es realmente irrelevante, LocalTime también funciona.
    • Gracias por este. De alguna manera he PERDIDO este maravilloso construido en la clase durante mucho tiempo!
    • Comentario por Ole V. V. es la correcta. Pero mejor aún, utilizar ZonedDateTime clase en lugar de LocalDateTime. Con LocalDateTime que se están desechando valiosa información de zona horaria, por ninguna razón, con nada ganado.
    • Útil si usted no tiene que ser compatible hacia atrás. Lamentablemente no es adecuado si usted está escribiendo para Android y mantener viejas versiones de API (o en cualquier otra instancia cuando Java 8 no siempre está disponible).
  4. 36

    Primero, import java.util.Calendario

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

    tl;dr

    ZonedDateTime.now().getHour()

    … o …

    LocalTime.now().getHour() 

    ZonedDateTime

    La Respuesta de J. D. es buena, pero no óptima. Que Respuesta utiliza la LocalDateTime clase. La falta de cualquier concepto de zona de tiempo o desplazamiento de UTC, que la clase no puede representar un momento.

    Mejor usar ZonedDateTime.

    ZoneId z = ZoneID.of( "America/Montreal" ) ;
    ZonedDateTime zdt = ZonedDateTime.now( z ) ;

    Especificar la zona horaria

    Si se omite el ZoneId argumento, se aplica implícitamente en tiempo de ejecución mediante la JVM actual de la zona horaria predeterminada.

    Ello:

    ZonedDateTime.now()

    …es el mismo que este:

    ZonedDateTime.now( ZoneId.systemDefault() )

    Mejor ser explícito, pasando su deseado/tiempo de espera de la zona. El valor predeterminado puede cambiar en cualquier momento durante el tiempo de ejecución.

    Si crítico, confirme la zona horaria del usuario.

    Hora-minuto

    Interrogar a la ZonedDateTime para la hora y los minutos.

    int hour = zdt.getHour() ;
    int minute = zdt.getMinute() ;

    LocalTime

    Si quieres que solo la hora del día sin la zona horaria, el extracto de LocalTime.

    LocalTime lt = zdt.toLocalTime() ;

    O saltar ZonedDateTime completamente, para ir 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).

    java.tiempo tipos

    Java: getMinutes y getHours


    Sobre java.tiempo

    La java.tiempo marco está construido en Java 8 y versiones posteriores. Estas clases suplantar la problemática de edad legado fecha y hora de las clases, tales como java.util.Fecha, Calendario, & SimpleDateFormat.

    Para obtener más información, consulte la Oracle Tutorial. Y la búsqueda de Desbordamiento de Pila, hay muchos ejemplos y explicaciones. La especificación es JSR 310.

    La Joda-Time proyecto, ahora en el modo de mantenimiento, asesora de la migración a la java.tiempo clases.

    Puede intercambiar java.tiempo objetos directamente con la base de datos. El uso de un Controlador JDBC compatible con JDBC 4.2 o más tarde. No hay necesidad para las cadenas, sin necesidad de java.sql.* clases.

    Dónde obtener el java.clases de tiempo?

    La ThreeTen-Extra proyecto se extiende java.tiempo con clases adicionales. Este proyecto es un terreno de prueba para posibles futuras incorporaciones a java.tiempo. Usted puede encontrar algunos de clases útiles aquí como Intervalo, YearWeek, YearQuarter, y más.

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

    Estas funciones devuelven valores int en horas y minutos.

    • Duplicados. Este enfoque ya se recogía en el Respuesta por J. D..
    • Es que java.sql.Time? Ciertamente no hay razón en absoluto para llevar esa obsoleta de la clase en juego cuando tienes java.time.LocalTime. Estás complicar.
    • Parece getMinutes() ha sido desaprobado en (estoy usando java 1.8) y ha sido reemplazado con Calendar.get(Calendar.MINUTE)
  7. 3

    Una forma más de conseguir minutos y horas es mediante el uso de SimpleDateFormat.

    SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
    String getMinutes = formatMinutes.format(new Date())
    
    SimpleDateFormat formatHours = new SimpleDateFormat("HH")
    String getHours = formatHours.format(new Date())
  8. 2

    Yo recomendaría buscar anuncios de joda tiempo.
    http://www.joda.org/joda-time/

    Tenía miedo de añadir otra biblioteca para mi espeso proyecto, pero es así de fácil y rápida, inteligente y genial.
    Además, juega bien con el código existente, hasta cierto punto.

  9. 1

    Mientras no recomiendo hacerlo, creo que vale la pena señalar que a pesar de que muchos de los métodos en java.util.La fecha han sido desaprobado, que todavía no funcionan. En situaciones triviales, se puede ACEPTAR el uso de ellos. También, java.util.Calendario es bastante lento, así que método getmonth y getYear en la Fecha podría ser útil más rápido.

  10. 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í

  11. 0

    import java.util.*Puede gethour y los minutos de uso del calendario y del formateador de la clase. Calendar cal = Calendar.getInstance() y Formatter fmt=new Formatter() y establecer un formato para la visualización de la hora y los minutos fmt.format("%tl:%M",cal,cal)y de impresión System.out.println(fmt) salida muestra como 10:12

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea