Подтвердить что ты не робот

У нас есть класс классов TimeSpan в Java

Мне просто интересно, нужна ли TimeSpan в java.util, чтобы я мог определить, сколько часов, минут и секунд есть между этими двумя моментами.

Из этого TimeSpan мы можем иметь временной интервал между двумя временами. как

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

или

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

TimeSpan ts = new TimeSpan(timeSpan);

и с этим TimeSpan мы можем использовать его в SimpleDateFormat.

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

Я не уверен, что это уже реализовано на Java, но еще не обнаружено мной.

4b9b3361

Ответ 1

Interval от JodaTime будет делать.

Временной интервал представляет собой период время между двумя моментами. Интервалы включают в себя начальный момент и исключая конец. Конечный момент всегда больше или равно начать мгновенно.

Интервалы имеют фиксированную миллисекунду продолжительность. В этом разница между начальными и конечными моментами. Продолжительность отображается отдельно по ReadableDuration. В результате, интервалы не сопоставимы. к сравните длину двух интервалов, вы должны сравнить их продолжительность.

Интервал также может быть преобразован в ReadablePeriod. Это разница между началом и концом точек с точки зрения таких полей, как лет и дней.

Интервал является потокобезопасным и неизменным.

Ответ 2

В Java 8 в стандартный API добавлена ​​правильная библиотека времени (это в значительной степени основано на JodaTime).

В нем есть два класса, которые вы можете использовать для указания периода:

  • Duration, который указывает продолжительность секунды или наносекунды времени.
  • Period, который указывает на более удобную для пользователя разницу, хранящуюся как "х лет и месяцев и т.д.".

Подробное объяснение различий между ними можно найти в учебном пособии

Ответ 3

Если вы ищете альтернативную более легкую версию, посмотрите на эту библиотеку, которую я написал, чтобы использовать ее в своем приложении для Android. https://github.com/ashokgelal/samaya

Извините, у меня нет документации по ее использованию, но она очень похожа на аналогичный класс .net Timespan. Кроме того, есть несколько модульных тестов, которые содержат много примеров того, как его использовать.

Ответ 4

Если вы используете Java 8 (или выше) или просто не хотите импортировать JodaTime (сам автор JodaTime предлагать перенос в java.time ): Java 8 предлагает эту функциональность с Periods, см. Здесь учебник: https://docs.oracle.com/javase/tutorial/datetime/iso/period.html

Позвольте мне процитировать учебник Oracle здесь:

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)");

Код производит вывод, аналогичный следующему:

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