Т.Л., д-р
LocalDate.parse("22/09/2016" , DateTimeFormatter.ofPattern("dd/MM/yyyy"))
.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"))
ПРОБЛЕМ
- Вы приравнивая объекты даты и времени со строками, представляющими значения даты-времени. Объект даты-времени может анализировать строку и может генерировать строку, но объект даты-времени всегда является отдельным и отличным от строки. Строка имеет формат; дата-время объекта не.
- Вы используете неприятные старые классы времени, которые теперь вытесняются классами java.time.
- Вы пытаетесь установить значение даты только для объекта с датой (круглый штырь в квадратном отверстии).
- Вы обманываете плохо разработанный метод
toString
, который тихо применяет часовой пояс к внутреннему значению, которое не имеет часовой пояс (это UTC).
Обязательно прочтите the correct Answer by Jon Skeet.
java.time
Используя новые классы java.time, в частности LocalDate
. Класс LocalDate
представляет собой значение даты только без времени и без часового пояса.
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate ld = LocalDate.parse("22/09/2016" , f);
Сформировать строку, чтобы представить это значение в стандартном формате ISO 8601 по телефону toString
.
String output = ld.toString(); // 2016-09-22
Сгенерируйте строку в требуемом формате, применяя форматирование.
String output = ld.format(f);
О java.time
java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытесняют неприятные старые классы времени, такие как java.util.Date
, .Calendar
, & java.text.SimpleDateFormat
.
Проект Joda-Time, теперь в maintenance mode, советует перейти на java.time.
Чтобы узнать больше, см. Oracle Tutorial. И поиск Stack Overflow для многих примеров и объяснений.
Большая часть функциональности java.time будет обратно портирован на Java 6 & 7 в ThreeTen-Backport и дополнительно выполнен с возможностью Android в ThreeTenABP (см How to use…).
Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more.
Я думаю, что вы чрезмерны. Проверьте [этот ответ] (http://stackoverflow.com/a/6252782/5292801) – Takarii
Вам следует лучше описать, что не так, с вашей точки зрения. Поскольку 'formatter.parse (« 22/09/2016 »)' уже делает то, что вы хотите 'я ожидал 22/09/2016 как объект даты. – SubOptimal
@Takarii Я не использую библиотеку joda –