una semana obtener nombre mes ingresar hora formatear fecha clase actual java datetime date time intervals

semana - obtener fecha y hora actual java



¿Hay alguna manera fácil de calcular y formatear los intervalos de hora/fecha en java? (4)

tl; dr

Duration.ofMillis( yourMillisecondsLongNumberGoesHere ) .toDays()

Usando java.time

Las viejas clases problemáticas de fecha y hora han sido suplantadas por las clases java.time.

Me gustaría mostrar el número de días para un valor largo dado de milisegundos

Durante un lapso de tiempo que implica horas, minutos y segundos (y días definidos como fragmentos de 24 horas), use la clase Duration .

Duration d = Duration.ofMillis( yourMillisecondsLongNumberGoesHere );

Para obtener el número de días, definidos definiendo el número total de segundos enteros por 86,400L, llame a toDays .

long days = d.toDays();

Acerca de java.time

El marco java.time está integrado en Java 8 y posterior. Estas clases suplantan a las problemáticas antiguas clases heredadas de fecha y hora, como java.util.Date , Calendar y SimpleDateFormat .

El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .

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 .

¿Dónde obtener las clases de java.time?

  • Java SE 8 , Java SE 9 y posterior
    • Incorporado.
    • Parte de la API Java estándar con una implementación integrada.
    • Java 9 agrega algunas características y correcciones menores.
  • Java SE 6 y Java SE 7
    • Gran parte de la funcionalidad de java.time se transfiere a Java 6 y 7 en ThreeTen-Backport .
  • Androide
    • El proyecto ThreeTenABP adapta ThreeTen-Backport (mencionado anteriormente) específicamente para Android.
    • Consulte Cómo utilizar ThreeTenABP ....

El proyecto ThreeTen-Extra amplía java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval , YearWeek , YearQuarter y más .

Estoy familiarizado con las clases de fecha y hora en el JDK y sus métodos de formateo asociados. Puedo ser ciego, pero no puedo encontrar un conjunto equivalente de clases para procesar los intervalos de tiempo. Por ejemplo, me gustaría mostrar el número de días para un valor largo dado de milisegundos. Me doy cuenta de que el método para hacer estas conversiones es bastante simple, sin embargo, cuando se tiene en cuenta la internacionalización y el soporte de localización, esto se vuelve menos trivial.

Me sorprende que al JDK le falte soporte para el procesamiento por intervalos. Sin embargo, las bases de datos como Postgresql lo soportan.

Básicamente, lo que estoy buscando en el JDK (si estoy demasiado ciego para verlo) o en una biblioteca de terceros es la siguiente funcionalidad:

  • Métodos de cálculo de tiempo Tales como milisegundos a semanas o segundos a nanosegundos. Aunque la matemática es simple para estas operaciones, tener una API para atravesar me parece más autodocumentado.
  • Las funciones de formato de intervalo de tiempo que formatean de acuerdo con la configuración regional pasada como DateFormat funcionan. Por ejemplo, en EN_US supondría que 10 días son buenos "10 días" y en japonés me gustaría que se devuelva "10 日".

¿Hay algo por ahí o es esto canidate para un nuevo proyecto de código abierto?



Lamentablemente, no hay nada como esto en la Biblioteca estándar, pero como señala Tobiask, los Apaches Commons tienen una herramienta útil para esto.

DurationFormatUtils tiene algunos formatos predefinidos (Hour: Minutes: Second, ISO) y le permite especificar el suyo propio.