расчет оставшихся дней с переходом на летнее время с использованием JODA API

У меня есть требование, например, вычисление дней между двумя датами и вычисление будущей даты путем добавления недель/месяцев к дате. Я использовал java.util.Calendar; и java.util.Date. они не дают точных результатов, это не работает при переходе на летнее время. поэтому я решил использовать API календаря JODA. Я очень новичок в JODA API. Пожалуйста, предоставьте мне пример кода для расчета приведенных ниже требований.

1).noOfDays (строка currDate, строка tarDate) 2).addMonths (строка даты, целые месяцы) 3).addDays (строка даты, целые дни) 4).futureDate (строка даты, целая неделя)

Спасибо, Ганеш.


person Ganesh    schedule 12.12.2012    source источник
comment
Вы уже просмотрели Joda Time API? Как далеко вы продвинулись? Почему вы используете String для представления дат в первую очередь? Для чего предназначен ваш метод futureDate?   -  person Jon Skeet    schedule 12.12.2012
comment
Я начал искать только сейчас, я получаю дату из текстового поля со строковым форматом, например 12/12/2012, метод futureDate даст дату, которая произойдет в будущем, добавив недели к дате.   -  person Ganesh    schedule 12.12.2012
comment
Так почему же он не называется addWeeks, как addDays и addMonths? Кроме того, изолируйте обработку текста от всего остального — первое нужно разобрать дату (например, в LocalDate).   -  person Jon Skeet    schedule 12.12.2012
comment
@Ganesh Я написал это учебник Joda-Time для решения нескольких частых случаев использования Joda-Time. Теоретическая часть в основном основана на документации, поэтому ее можно пропустить и сразу перейти к примерам. Если вы только начали изучать Joda-Time API, это может быть вам полезно.   -  person Andrii Polunin    schedule 13.12.2012
comment
Очень хороший мастер-класс, сэкономил мне кучу времени. Большое спасибо @ Андрей Полунин   -  person Ganesh    schedule 13.12.2012


Ответы (1)


0) Чтобы преобразовать строку в дату, используйте
DateTimeFormatter
Например, если ваше свидание выглядит как "31/12/2012"

DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/yyyy");  
DateTime date = dtf.parseDateTime("31/12/2012");  

этот класс ISODateTimeFormat содержит средства форматирования для основных форматов даты .
1) Чтобы рассчитать дни между двумя датами, используйте метод Days#daysBetween
например

DateTime date1 = dtf.parseDateTime("31/12/2012");    
DateTime date2 = dtf.parseDateTime("15/11/2012");  
int daysbetween = Days.daysBetween(date1, date2);

2) Чтобы добавить месяцы к дате, используйте DateTime. #плюсМесяцы()

DateTime newDate = dtf.parseDateTime("31/12/2012").plusMonths(5);  

3) Чтобы добавить дни к дате, используйте метод DateTime#plusDays()
4) Чтобы добавить недели к дате, используйте метод DateTime#plusWeeks()
Также вы можете использовать LocalDate вместо класса DateTime, если вы используете дату без времени

person Ilya    schedule 12.12.2012
comment
Как рассчитать разницу между прошедшей датой и будущей датой.i,e, которая дает результат -ve days. - person Ganesh; 12.12.2012
comment
@Ganesh Days.daysBetween(passedDate, futureDate); - person Ilya; 12.12.2012