Создайте org.joda.time.DateTime с java.time.LocalDate и java.time.LocalTime или java.time.LocalDateTime

Итак, в основном у меня есть DatePicker и TimePicker, которые соответственно дадут мне LocalDate и LocalTime. Теперь я хочу использовать эти значения для создания переменной org.joda.time.DateTime.

Я не уверен, как это сделать. Я искал везде, но я не могу найти хороший ответ на этот вопрос, все ответы, которые я нашел, были для JPA, которые я не использую.

не ответ, но в наши дни мы используем только java LocalDate и LocalDateTime и пропускаем joda. Java-версия немного чище.

Brett Sutton 15.05.2022 12:53

В каком часовом поясе вы хотите использовать Joda-Time DateTime? (Я понимаю, почему вы не хотите Joda-Time LocalDateTime.)

Ole V.V. 15.05.2022 12:55

@ОлеВ.В. Центральноевропейское время или UTC +1

Yasmine Daly 15.05.2022 13:18

У меня может возникнуть соблазн сначала превратиться в java.time.ZonedDateTime, а затем в DateTime. Получите ZonedDateTime от yourLocalDate.atTime(yourLocalTime).atZone(ZoneId.of("Africa‌​/Tunis")). DateTime из new DateTime(yourZonedDateTime.toInstant().toEpochMilli(), DateTimeZone.forID("Africa/Tunis")). Преимущество заключается в том, что вы выполняете большую часть работы по преобразованию, используя современный API java.time, и передаете только два аргумента конструктору DateTime, что значительно повышает ясность по сравнению с использованием конструктора с 6 или 8 аргументами.

Ole V.V. 15.05.2022 13:34

Если вы используете библиотеку, проверьте, есть ли у нее более новая версия

Thorbjørn Ravn Andersen 15.05.2022 13:38

@ ThorbjørnRavnAndersen Всегда хорошая идея. Однако в этом случае java.time заменил Joda-Time на Java 8, поэтому Joda-Time в основном существует для людей, которые еще не обновились до Java 8, поэтому его нельзя напрямую интегрировать с классами java.time (LocalDate и LocalTime). ). Так что в данной ситуации более новая версия нам не поможет. Если ОП сможет полностью отказаться от Joda-Time и повсюду использовать java.time, это, конечно, значительно упростит ее ситуацию.

Ole V.V. 15.05.2022 13:45

@ОлеВ.В. да. Идея заключалась в том, что более новая версия библиотеки, явно ориентированная на java.time, будет лучшим долгосрочным решением. В наши дни joda предназначена только для устаревших проектов до Java8.

Thorbjørn Ravn Andersen 15.05.2022 13:48

Чтобы было ясно, @ThorbjørnRavnAndersen, вы имели в виду более новую версию любого API, для которого OP (в настоящее время) требуется Joda-Time DateTime.

Ole V.V. 15.05.2022 13:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
8
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно официальной документации https://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html ты можешь использовать DateTime (целый год, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond) Создает экземпляр из значений поля даты и времени, используя ISOChronology в часовом поясе по умолчанию. Значения для конструктора можно получить из объектов LocalDate и Localtime. https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.htmlhttps://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html

Хороший ответ (+1). Чтобы получить миллисекунду из LocalTile, вам нужно yourLocalTime.get(ChronoField.MILLI_OF_SECOND).

Ole V.V. 15.05.2022 13:25

Будьте очень внимательны к часовым поясам.

Thorbjørn Ravn Andersen 15.05.2022 13:48

@ ThorbjørnRavnAndersen очень прав. Упомянутый конструктор существует в варианте, который дополнительно принимает аргумент DateTimeZone, куда вы можете передать, например, DateTimeZone.forID("Africa/Tunis").

Ole V.V. 15.05.2022 19:35

Другие вопросы по теме