Формат Java - подробная разница между датами - PullRequest
3 голосов
/ 17 октября 2010

Я уверен, что раньше об этом спрашивали каким-то другим способом, который я просто не могу найти, поэтому я прошу прощения за повторение, если я так сделаю.

Я пытаюсь вычислить разницу между двумя датами и затем отобразить эту разницу в днях, минутах и ​​секундах; что-то вроде «3 дня 23 минуты и 59 секунд»

Очень легко, я уверен, но на практике я парень на C #, поэтому мне трудно думать об этом из коробки.

Заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 17 октября 2010

Нет прямого указания сделать это с объектами Calendar и Date, которые в настоящее время являются частью стандартного API Java.Вы можете найти количество миллисекунд между двумя датами и использовать арифметику.Это зависит от ваших потребностей в точности, например, если вам нужно учитывать високосные годы.Это сделало бы вычисления более запутанными, но все же выполнимыми.

Библиотека Joda-Time предлагает объект Period, который делает именно то, что вы хотите сделать.

3 голосов
/ 17 октября 2010
Date start = new Date(2010, 10, 13);
Date end   = new Date(2010, 10, 18);

long diffInMillis = end.getTime() - start.getTime();

long diffInDays  = diffInMillis/1000/86400;
long diffInHours = (diffInMillis/1000 - 86400*diffInDays) / 3600;
long diffInMins  = (diffInMillis/1000 - 86400*diffInDays - 3600*diffInHours) / 60;
long diffInSecs  = (diffInMillis/1000 - 86400*diffInDays - 3600*diffInHours - 60*diffInMins);
0 голосов
/ 25 июля 2012

Это то, что я сделал, это работает для меня, но я уверен, что это может быть улучшено или даже пока, возможно, есть скрытый (для меня) класс, который делает это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...