У меня есть два объекта DateTime , которым нужно найти продолжительность их разницы ,
У меня есть следующий код, но я не знаю, как продолжить его, чтобы получить ожидаемые результаты, как показано ниже:
пример
11/03/14 09:30:58
11/03/14 09:33:43
elapsed time is 02 minutes and 45 seconds
-----------------------------------------------------
11/03/14 09:30:58
11/03/15 09:30:58
elapsed time is a day
-----------------------------------------------------
11/03/14 09:30:58
11/03/16 09:30:58
elapsed time is two days
-----------------------------------------------------
11/03/14 09:30:58
11/03/16 09:35:58
elapsed time is two days and 05 mintues
Код
String dateStart = "11/03/14 09:29:58";
String dateStop = "11/03/14 09:33:43";
Custom date format
SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
} catch (ParseException e) {
e.printStackTrace();
}
// Get msec from each, and subtract.
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000);
System.out.println("Time in seconds: " + diffSeconds + " seconds.");
System.out.println("Time in minutes: " + diffMinutes + " minutes.");
System.out.println("Time in hours: " + diffHours + " hours.");
java
date-arithmetic
J888
источник
источник
Ответы:
попробуйте следующее
источник
Преобразование разницы дат можно было бы лучше обработать с помощью встроенного класса Java TimeUnit . Он предоставляет служебные методы для этого:
источник
Использовать библиотеку Joda-Time
В Joda Time есть понятие временного интервала:
Еще один пример разницы дат
Еще одна ссылка
или с Java-8 (который интегрировал концепции Joda-Time)
источник
Вот как проблема может быть решена в Java 8 точно так же, как ответ шамимза.
Источник: http://docs.oracle.com/javase/tutorial/datetime/iso/period.html
Код производит вывод, подобный следующему:
Мы должны использовать LocalDateTime http://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html, чтобы получить разницу в часах, минутах и секундах .
источник
источник
Вы можете создать такой метод, как
Этот метод вернет количество дней между двумя днями.
источник
Как пишет Майкл Боргвардт в своем ответе здесь :
источник
В Java 8, вы можете сделать из
DateTimeFormatter
,Duration
иLocalDateTime
. Вот пример:источник
У меня получилось, могу попробовать, надеюсь, это будет полезно. Сообщите мне, если возникнут какие-либо проблемы.
источник
Это код:
и выход:
источник
Что касается обновления ответа шамима, вот метод, который выполняет задачу без использования какой-либо сторонней библиотеки. Просто скопируйте метод и используйте
источник
Я недавно решил аналогичную проблему простым методом.
И , как ожидается , она печатает:
7 days ago
.источник
Это программа, которую я написал, которая получает количество дней между двумя датами (здесь нет времени).
http://pastebin.com/HRsjTtUf
источник
java.time.Duration
Я все еще не чувствовал, что ни один из ответов был актуальным и по существу. Итак, вот современный ответ с использованием
Duration
java.time, современного API даты и времени Java (ответы MayurB и mkobit упоминают один и тот же класс, но ни один из них не преобразуется правильно в дни, часы, минуты и минуты по запросу).Вывод из этого фрагмента примера:
Обратите внимание, что день
Duration
всегда считается за 24 часа. Если вы хотите по-разному относиться к аномалиям времени, таким как переходы в летнее время, решения, включая (1), используютChronoUnit.DAYS
(2) UsePeriod
(3)Use
LocalDateTimeinstead of
ZonedDateTime` (может считаться взломом).Приведенный выше код работает с Java 8 и с ThreeTen Backport, этим обратным портом java.time на Java 6 и 7. Из Java 9 можно будет написать его немного лучше, используя методы
toHoursPart
,toMinutesPart
иtoSecondsPart
добавляют туда.Я уточню объяснения в один из дней, когда у меня будет время, может быть, не раньше следующей недели.
источник
Как рассчитать разницу между двумя датами в Java
источник