2015-11-11 3 views
0

Я хочу рассчитать разницу между двумя датами в днях.Рассчитать разницу в дате в дни в Android

У меня есть что-то вроде:

String deadline = "2015-08-15"; 

и я получаю текущую дату в:

String timeStamp = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date()); 

Например, было бы на сегодня:

2015-11-11

Как я могу рассчитать дни между этими двумя датами? И что произойдет, если дата прошла.

+0

взглянуть на http://stackoverflow.com/questions/3838527/android -java-date-difference-in-days – vincentzhou

+0

Это не дубликат, потому что у меня две строки. – korunos

+0

Не совсем. Это не решено. – korunos

ответ

6

Я использую этот

public String getDateAgo() { 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
    try { 
     Date date = sdf.parse(createdAt); 
     Date now = new Date(System.currentTimeMillis()); 
     long days = getDateDiff(date, now, TimeUnit.DAYS); 
     if (days < 7) 
      return days + "d"; 
     else 
      return days/7 + "w"; 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return "ERROR"; 
} 

private long getDateDiff(Date date1, Date date2, TimeUnit timeUnit) { 
    long diffInMillies = date2.getTime() - date1.getTime(); 
    return timeUnit.convert(diffInMillies, TimeUnit.MILLISECONDS); 
} 
+0

очень хороший soluton! Спасибо! – korunos

0

вы можете использовать Calendar класс для этого. за прошедшее время вы можете пройти день, месяц и год в Календарный класс, после чего вы можете преобразовать его в milisecond. и вы можете сделать это в течение текущего времени. и после этого вы можете преобразовать его в milisecond. то у вас есть 2 значения с milisecond единиц. и вы можете рассчитать их разницу, и снова вы можете преобразовать этот результат milisecond в Date. чтение документация класса и его метод может быть очень полезным.

2

Используйте jodatime:

String date1 = "2015-11-11"; 
String date2 = "2013-11-11"; 
DateTimeFormatter formatter = new DateTimeFormat.forPattern("yyyy-MM-dd"); 
DateTime d1 = formatter.parseDateTime(date1); 
DateTime d2 = formatter.parseDateTime(date2); 
long diffInMillis = d2.getMillis() - d1.getMillis(); 

Duration duration = new Duration(d1, d2); 
int days = duration.getStandardDays(); 
int hours = duration.getStandardHours(); 
int minutes = duration.getStandardMinutes(); 
0

Попробуйте это,

public static long getDatesDifferenceInDays(Date startDate,Date endDate) { 
    long different = endDate.getTime() - startDate.getTime(); 
    long secondsInMilli = 1000; 
    long minutesInMilli = secondsInMilli * 60; 
    long hoursInMilli = minutesInMilli * 60; 
    long daysInMilli = hoursInMilli * 24; 
    long elapsedDays = different/daysInMilli; 
    return elapsedDays; 
} 
Смежные вопросы