2016-08-03 3 views
2

Я пытаюсь получить оставшиеся годы, месяцы и дни между двумя датами: Так я использовал Joda время, чтобы сделать так:Остающиеся лет, месяцев, дней, используя время Joda (Android)

DateTime endDate = new DateTime(2018,12,25,0,0); 
DateTime startDate = new DateTime(); 
Period period = new Period(startDate,endDate,PeriodType.yearMonthDay()); 

PeriodFormatter formatter = new PeriodFormatterBuilder().appendYears().appendSuffix(" Year "). 
      appendMonths().appendSuffix(" Month ").appendDays().appendSuffix(" Day ").appendHours()..toFormatter(); 

String time = formatter.print(period); 

Этот дает мне время: 2 год 4 месяц 22 день

Однако, я хочу целочисленные значения каждого числа оставшихся лет, месяцев, дней. Таким образом, вместо «2 года 4 месяца 22 дня», я хочу, чтобы установить свои переменные:

int year = 2 
int month = 4 
int day = 22 

Есть ли способ, чтобы получить эти значения отдельно вместо получения одной строки? Спасибо огромное! :)

+1

Прочтите [документацию] (http://joda-time.sourceforge.net/apidocs/org/joda/time/Period.html)! Для этого существуют способы получения. – Andreas

ответ

1

я имел такое же требование один раз, вот фрагмент кода

LocalDate d=LocalDate.of(yy,mm,dd); 
    LocalDate d2=LocalDate.of(yy, mm, dd); 
    Period p=Period.between(d, d2); 
    long day,month,year; 
    day=p.getDays(); 
    month=p.getMonths(); 
    year=p.getYears(); 
    System.out.println(day+" : "+month+" : "+year); 
0

Вызовите методы, предоставляемые классом DateTime, и просто вычтите их. Примером лет ниже:

int year = (int) dateTime#year#getField() - (int) dateTime2#year#getField()

UNTESTED код !! Я буду смотреть в него позже, но общая идея та же, получить информацию о поле, то просто вычесть его, чтобы получить значение