2012-12-05 4 views
1

Каков наилучший способ рассчитать разницу между 01.01.2013 и теперь, так что результат выглядит как 25 дней 16 часов 18 минут 43 секунды?android рассчитать разницу между постоянной датой и сейчас

+0

попробуйте использовать unix time: учитывается в секундах с 1.1.1970. поэтому вы можете просто создать 2 объекта даты, и разница их времени unix покажет вам, сколько секунд между двумя датами. остальное - простая математика. – devsnd

+0

смотрите мой ответ на эту проблему [решение] [1] [1]: http://stackoverflow.com/questions/6897027/getting-difference-between-two-dates-android/16830015# 16830015 – Swapnil

ответ

2
String dateStop = "01.01.2013"; 
long now = System.currentTimeMillis(): 

SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy"); 


Date d1 = null; 
Date d2 = null; 
try { 
    d1 = new Date (now); 
    d2 = format.parse(dateStop); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

long difference = d2.getTime() - d1.getTime(); 
long differenceBack = difference; 
differenceBack = difference/1000; 
int secs = differenceBack % 60; 
differenceBack /= 60; 
int mins = differenceBack % 60; 
differenceBack /= 60; 
int hours = differenceBack % 24; 

Разница в миллисекундах. Тогда вы можете просто вычислить количество дней/часов/мин/сек.

+0

спасибо, что работает. Теперь я вычисляю дни как длинные дни = разность/24/3600/1000; Но я настолько глуп, что получаю некоторые отрицательные значения, пытаясь рассчитать оставшиеся часы o_0 Можете ли вы помочь? Извините за задание глупых вопросов, просто проснулся и ничего не могу сделать>< – Droidman

0

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

Я хотел бы предложить эту большую библиотеку http://joda-time.sourceforge.net/

Joda-Time обеспечивает замену качества для даты и времени Java классов. Конструкция позволяет использовать несколько систем календарей, а еще обеспечивает простой API. Календарь «по умолчанию» - это стандарт ISO8601 , который используется XML. Григорианские, юлианские, буддийские, коптские, эфиопские и исламские системы также включены, и мы приветствуем дальнейшие дополнения . Вспомогательные классы включают часовой пояс, продолжительность, формат и разбор.

Посмотрите на использование Periods и что-то вдоль линий

DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0); 
DateTime end = new DateTime(2006, 1, 1, 0, 0, 0, 0); 

// period of 1 year and 7 days 
Period period = new Period(start, end); 

я использовал что-то подобное, чтобы создать обратный отсчет времени, однако вы не в своем вопросе, чтобы заявить, что формат (дни, секунды, минуты) вы хотите вернуть значение. Период, однако, довольно гибкий на этом фронте. Например:

// able to calculate whole days between two dates easily 
Days days = Days.daysBetween(start, end); 

// able to calculate whole months between two dates easily 
Months months = Months.monthsBetween(start, end); 
Смежные вопросы