2015-03-22 4 views
-1
private String getTimeDiff(Date D1, Date D2){ 
    ... 
    return diffString; 
} 

Я хочу создать функцию, которая принимает два java.util.Date объекты и возвращает разницу в следующим образом:Finding между двумя датами до лет

-> Если разница во времени больше в год, она должна возвращать только разницу года (как 5 лет)

-> Если это менее чем за год, но больше, чем через месяц, то она должна возвращать только месяц разница (как 2 месяца)

- -> И так далее для дней, часов, минут, секунд

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

Thankyou

ответ

1
long t1 = d1.getTime(); 
long t2 = d2.getTime() 
long diff = Math.abs(t1-t2); 
int years = diff %(365*24*60*60*1000); 
if(years >0){ 
    return ""+years+" years"; 
} 
int months = diff%(30*24*60*60*1000); 
if(months>0){ 
    return ""+months+" months"; 
} 

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

+0

У меня было такое впечатление, что долго было 2^32 .... Спасибо –

+0

Нет, Java long 64 бит (так max_long составляет 2^63-1). Общие реализации C++ используют 32-битные longs, но даже это не принудительно (в C++ единственным правилом является long> = int> = short> = char, фактические размеры не привязаны к определенным значениям). –

+0

Да, я только что нашел это. Спасибо за ответ –

Смежные вопросы