Итак, в основном у меня есть DatePicker и TimePicker, которые соответственно дадут мне LocalDate и LocalTime. Теперь я хочу использовать эти значения для создания переменной org.joda.time.DateTime.
Я не уверен, как это сделать. Я искал везде, но я не могу найти хороший ответ на этот вопрос, все ответы, которые я нашел, были для JPA, которые я не использую.
В каком часовом поясе вы хотите использовать Joda-Time DateTime? (Я понимаю, почему вы не хотите Joda-Time LocalDateTime.)
@ОлеВ.В. Центральноевропейское время или UTC +1
У меня может возникнуть соблазн сначала превратиться в 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 аргументами.
Если вы используете библиотеку, проверьте, есть ли у нее более новая версия
@ ThorbjørnRavnAndersen Всегда хорошая идея. Однако в этом случае java.time заменил Joda-Time на Java 8, поэтому Joda-Time в основном существует для людей, которые еще не обновились до Java 8, поэтому его нельзя напрямую интегрировать с классами java.time (LocalDate и LocalTime). ). Так что в данной ситуации более новая версия нам не поможет. Если ОП сможет полностью отказаться от Joda-Time и повсюду использовать java.time, это, конечно, значительно упростит ее ситуацию.
@ОлеВ.В. да. Идея заключалась в том, что более новая версия библиотеки, явно ориентированная на java.time, будет лучшим долгосрочным решением. В наши дни joda предназначена только для устаревших проектов до Java8.
Чтобы было ясно, @ThorbjørnRavnAndersen, вы имели в виду более новую версию любого API, для которого OP (в настоящее время) требуется Joda-Time DateTime.




Согласно официальной документации 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).
Будьте очень внимательны к часовым поясам.
@ ThorbjørnRavnAndersen очень прав. Упомянутый конструктор существует в варианте, который дополнительно принимает аргумент DateTimeZone, куда вы можете передать, например, DateTimeZone.forID("Africa/Tunis").
не ответ, но в наши дни мы используем только java LocalDate и LocalDateTime и пропускаем joda. Java-версия немного чище.