java timespan java.util.date

¿Tenemos una clase de clase de TimeSpan en Java?



java.util.date (4)

Con JDK 8 las bibliotecas de fecha y hora en SDK se han enriquecido y puede usar

Duration o Period

Interval de JodaTime hará ..

Un intervalo de tiempo representa un período de tiempo entre dos instantes. Los intervalos incluyen el inicio instantáneo y el final exclusivo. El instante final siempre es mayor o igual que el instante inicial.

Los intervalos tienen una duración fija de milisegundos. Esta es la diferencia entre los instantes de inicio y fin. La duración se representa por separado por ReadableDuration. Como resultado, los intervalos no son comparables. Para comparar la longitud de dos intervalos, debes comparar sus duraciones.

Un intervalo también se puede convertir en un Período de lectura. Esto representa la diferencia entre los puntos de inicio y final en términos de campos, como años y días.

El intervalo es seguro para hilos e inmutable.

Simplemente me preguntaba si hay una necesidad de TimeSpan en java.util para poder definir cuántas horas, minutos y segundos hay entre estas dos veces.

Desde este TimeSpan podemos tener un intervalo de tiempo entre dos veces. me gusta

TimeSpan getTimeSpan( Date before, Date after ){...}

o

long timeSpan = System.currentTimeMillis(); // ... long job timeSpan = System.currentTimeMillis() - timeSpan; TimeSpan ts = new TimeSpan(timeSpan);

y con este TimeSpan podemos usarlo en SimpleDateFormat .

SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); format.format( timsSpan );

No estoy seguro de si esto ya se ha implementado en Java pero aún no lo he descubierto.


En Java 8 se ha agregado una biblioteca de tiempo adecuada a la API estándar (esto se basa en gran medida en JodaTime).

En él hay dos clases que puedes usar para indicar un período:

  1. Duration que indica una duración de segundos o nanosegundos de un intervalo de tiempo.
  2. Period que indica una diferencia más fácil de usar, almacenada como ''x años y y meses, etc.''.

Una explicación detallada de la diferencia entre ellos se puede encontrar en el tutorial de Java.


Si está buscando una versión más ligera alternativa, eche un vistazo a esta biblioteca que escribí para usar en mi propia aplicación de Android. https://github.com/ashokgelal/samaya

Lo sentimos, no tengo ninguna documentación sobre su uso, pero es muy similar a la contraparte .net Timespan class. Además, hay algunas pruebas unitarias que contienen muchos ejemplos sobre cómo usarlo.


Si está usando Java 8 (o superior) o simplemente no quiere importar JodaTime (el propio Autor de JodaTime sugiere migrar a java.time): Java 8 ofrece esa funcionalidad con Period , consulte aquí para ver un tutorial: https : //docs.oracle.com/javase/tutorial/datetime/iso/period.html

Permítanme citar el tutorial de Oracle aquí:

LocalDate today = LocalDate.now(); LocalDate birthday = LocalDate.of(1960, Month.JANUARY, 1); Period p = Period.between(birthday, today); long p2 = ChronoUnit.DAYS.between(birthday, today); System.out.println("You are " + p.getYears() + " years, " + p.getMonths() + " months, and " + p.getDays() + " days old. (" + p2 + " days total)");

El código produce una salida similar a la siguiente:

You are 53 years, 4 months, and 29 days old. (19508 days total)