Другие ответы верны, но устарели.
java.time
Среда java.time встроена в Java 8 и более поздние версии.Эти классы вытесняют старые проблемные классы даты и времени, такие как java.util.Date
, .Calendar
и & java.text.SimpleDateFormat
.Команда Joda-Time также рекомендует выполнить переход на java.time.
Чтобы узнать больше, ознакомьтесь с Oracle Tutorial .И поищите в Stack Overflow множество примеров и объяснений.
Большая часть функций java.time перенесена в Java 6 & 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP .
Проект ThreeTen-Extra расширяет java.time дополнительными классами.Этот проект является испытательным полигоном для возможных будущих дополнений в java.time.
LocalDate
Класс LocalDate
представляет значение только для даты без времени-на сегодняшний день и без часового пояса.
Я предлагаю использовать стандартные форматы ISO 8601 для ваших строк, где это возможно.Но в вашем случае нам нужно указать шаблон форматирования.
String input = "Apr 10 2011";
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "MMM d uuuu" );
LocalDate earlier = LocalDate.parse ( input , f );
DateTimeFormatter formatterOut = DateTimeFormatter.ofLocalizedDate ( FormatStyle.MEDIUM ).withLocale ( Locale.US );
String output = earlier.format ( formatterOut );
LocalDate later = earlier.plusDays ( 13 );
long days = ChronoUnit.DAYS.between ( earlier , later );
Дамп на консоль.
System.out.println ( "from earlier: " + earlier + " to later: " + later + " = days: " + days + " ending: " + output );
от более раннего: 2011-04-10 до более позднего: 2011-04-23 = дни: 13 окончание: 10 апреля,2011