Преобразование java.util.Date в LocalDate

Мне нужно преобразовать java.util.Date в LocalDate. Я украл пример отсюда: Преобразовать java.util.Date в java. время.LocalDate

но заметил что-то странное.

Когда я просто использую new LocalDate(), я вижу в отладчике: введите здесь описание изображения

но когда я делаю: date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), то в отладчике я вижу: введите здесь описание изображения

поэтому вместо iLocalMillis есть year и так далее. Что вызывает проблемы для меня позже. Почему это так? Могу ли я иметь точно такие же реквизиты после конвертации, как и в new LocalDate()?


person Michu93    schedule 28.02.2019    source источник
comment
Which causes problems for me later ... какие проблемы? Я имею в виду, если оба экземпляра принадлежат к одному классу, что в них будет отличаться? Вы удосужились прокрутить до конца свойства в случае первого LocalDate?   -  person Tim Biegeleisen    schedule 28.02.2019
comment
Я отправляю эту дату третьей стороне, и хотя с new LocalDate() проблем нет, это происходит, когда я пытаюсь отправить преобразованную LocalDate из java.util.Date. Для этих дат больше нет значений - только эти три, которые вы можете видеть на скриншоте   -  person Michu93    schedule 28.02.2019
comment
Что третья сторона делает с LocalDate и в чем проблема?   -  person Tim Biegeleisen    schedule 28.02.2019
comment
Не существует такой вещи, как new LocalDate(), поэтому ваша проблема, вероятно, связана с тем, как вы думаете, что делаете это. В любом случае, если вы наблюдаете разные поля в обоих случаях, это означает, что вы используете разные классы с разным импортом.   -  person kumesana    schedule 28.02.2019
comment
Может ли быть задействован другой класс LocalDate? Например, из Joda-Time? Казалось бы, это объясняет.   -  person Ole V.V.    schedule 28.02.2019


Ответы (1)


Поля в первом снимке соответствуют внутренней структуре класса org.joda.time.LocalDate.

Поля во втором снимке соответствуют внутренней структуре класса java.time.LocalDate.

Итак, вы смешиваете в своем коде два разных класса LocalDate.

person assylias    schedule 28.02.2019
comment
@Michu93 И… не делай этого! Не смешивайте Joda-Time с java.time. Оба созданы одним и тем же человеком, Стивеном Коулборном. Joda-Time была блестящей первой попыткой, и java.time (JSR 310) является преемником. Классы java.time представляют собой переработанный дизайн с использованием уроков, извлеченных из Joda-Time, с похожими концепциями, но другой реализацией. - person Basil Bourque; 28.02.2019