Как установить конкретную дату в объект Joda Time DateTime?

Я новичок в Joda Time, и у меня есть следующие сомнения:

Я просто создал новый пустой объект DateTime таким образом:

DateTime dataMovimentoFittizio = new DateTime();

Моя проблема в том, что мне кажется, что тогда я не могу установить год, месяц и день для этого объекта.

Как я могу правильно установить конкретную дату в этот объект?


person AndreaNobili    schedule 22.11.2016    source источник
comment
Помимо DateTime(), для DateTime доступно много других конструкторов. Вы ознакомились с документацией?   -  person GriffeyDog    schedule 22.11.2016
comment
@GriffeyDog Я знаю конструктор, но не могу ли я установить его после создания объекта?   -  person AndreaNobili    schedule 22.11.2016
comment
Нет, DateTime объекты неизменяемы.   -  person GriffeyDog    schedule 22.11.2016
comment
С самого начала документации: DateTime — это стандартная реализация немодифицируемого класса datetime. Так что нет, ты не можешь. Но существует множество методов withYear, withDate и т. д., которые создают новые экземпляры на основе одного существующего и одного различия.   -  person Jon Skeet    schedule 22.11.2016
comment
Если вы используете Java 8, вам следует использовать JSR-310, доступный в пакете java.time.   -  person MC Emperor    schedule 07.06.2020


Ответы (1)


Неизменяемые объекты

В классах Joda-Time в основном используются неизменяемые объекты, предназначенные для того, чтобы их нельзя было изменить после создания экземпляра.

Используйте методы для создания экземпляров новых объектов, частично основанных на значениях существующего объекта.

Java.время

Проект Joda-Time теперь находится в режиме обслуживания и рекомендует перейти на классы java.time.

Классы java.time строго используют неизменяемые объекты.

LocalDate

Для значения только для даты без времени суток и без часового пояса. Используйте LocalDate.

LocalDate ld = LocalDate.of( 2016 , 1 , 23 );  // January 23, 2016
person Basil Bourque    schedule 22.11.2016