2016-06-10 3 views
1
public static void main(String args[]) throws ParseException{ 


    String string = "May 2, 2016"; 
    DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH); 
    Date date = format.parse(string); 
    System.out.println(date); 
    DateTime dateTime = new DateTime(date); 
    DateTime currentDate = new DateTime(Calendar.getInstance().getTime()); 
    System.out.println(Calendar.getInstance().getTime()); 
    Period p = new Period(dateTime, currentDate); 
    System.out.println(p.getYears()); 
    System.out.println(p.getMonths()); 
    System.out.println(p.getDays()); 

} 

}Joda библиотека времени getdays дает неправильный результат

Результат для дней 1

ожидать, учитывая сегодня 10 июня 2016 он должен быть 8

+0

ohh, так что я всегда должен показывать годами недели? –

+0

@RC. пожалуйста, оставьте свой комментарий в качестве ответа. Я согласен с этим. –

ответ

2

Ничто здесь не так, вы получите 1 потому что 8 дней - одна неделя и один день. Если вы хотите получить 8 за «день», вы должны вычислить его обратно с недельной части (т. Е. Недели * 7 + день).

2

Чтобы получить то, что вы ожидаете, вы должны использовать другой PeriodType: PeriodType.yearMonthDay().

Period p = new Period(dateTime, currentDate, PeriodType.yearMonthDay()); 

В настоящее время код использует стандартные (по умолчанию) PeriodType, который ломает период в годы, месяцы, недели, дни, часы, минуты, секунды, Millis.

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