2013-02-28 2 views
39

Предположим, что существует две даты A (время начала) & B (время окончания). A & B может быть временем в тот же день или даже другой день. Моя задача - показать разницу в секундах. Формат даты, который я использую, -Разница в секундах между двумя датами, использующими время Джоды?

Date Format :: "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 

Для примера.

start date :: "2011-11-16T14:09:23.000+00:00" 
end date ::  "2011-11-17T05:09:23.000+00:00"    

Справка приветствуется.

ответ

102

Используйте Seconds класс:

DateTime now = DateTime.now(); 
DateTime dateTime = now.plusMinutes(10); 
Seconds seconds = Seconds.secondsBetween(now, dateTime); 
System.out.println(seconds.getSeconds()); 

Этот фрагмент кода распечатывает 600. Я думаю, что это то, что вам нужно.

В качестве дополнительной рекомендации ознакомьтесь с документацией joda-time. Это очень хорошо, и большинство вещей очень легко обнаружить.

В случае, если вам нужна помощь с разбором дат (Это в документации, на самом деле), проверить соответствующие вопросы, например:

Parsing date with Joda with time zone

+0

Thanx pcalcao .. он работал !! :-) –

+10

Если вы ищете разницу (как положительное число), обязательно принимайте абсолютное значение 'secondsBetween', в противном случае вы можете получить отрицательное число, если аргументы будут отменены (например, если вы вызываете' Seconds .secondsBetween (dateTime, now) '. – user1366367

4

Ответ @pcalcao будет лучше в большинстве случаев. Имейте в виду, что секунды будут округлены до целого числа.

Если вы заинтересованы в подразделах секунд точность только вычитать миллисекунды:

double seconds = (now.getMillis() - dateTime.getMillis())/1000d; 
Смежные вопросы