Подтвердить что ты не робот

Как конвертировать Joda-Time DateTime в java.util.Date и наоборот?

Можно ли это сделать? Если да, то как мне сделать преобразование из Joda-Time в Date и наоборот?

4b9b3361

Ответ 1

Чтобы преобразовать Java Date в Joda DateTime: -

Date date = new Date();
DateTime dateTime = new DateTime(date);

И наоборот: -

Date dateNew = dateTime.toDate();

С TimeZone, если требуется: -

DateTime dateTimeNew = new DateTime(date.getTime(), timeZone);
Date dateTimeZone = dateTime.toDateTimeAtStartOfDay(timeZone).toDate();

Ответ 2

Вы не указали какой тип в интересующем вас времени Joda, но:

Instant instant = ...;
Date date = instant.toDate();
instant = new Instant(date);
// Or...
instant = new Instant(date.getTime());

Ни от Date, ни от Instant не связаны с часовыми поясами, поэтому здесь нет необходимости указывать здесь.

Нет смысла конвертировать из LocalDateTime/LocalDate/LocalTime в Date (или наоборот), поскольку это будет зависеть от применяемого часового пояса.

С помощью DateTime вы можете преобразовать в Date без указания часового пояса, но для преобразования с Date в DateTime необходимо указать часовой пояс или использовать часовой пояс системы по умолчанию. (Если вы действительно этого хотите, я бы прямо указал на это, чтобы было ясно, что это преднамеренный выбор.)

Например:

DateTimeZone zone = DateTimeZone.forID("Europe/London");
Date date = ...;
DateTime dateTime = new DateTime(date.getTime(), zone);

Ответ 3

Преобразовать из Java Date в Joda Время:
Для преобразования из Date to DateTime необходимо указать часовой пояс.
Чтобы преобразовать из java.util Date в Joda Time of Date, вам просто нужно передать java.util дату и часовой пояс для конструктора Joda Time of Date.

java.util.Date date = new java.util.Date(System.currentTimeMillis());
DateTimeZone dtz = DateTimeZone.getDefault();// Gets the default time zone.
DateTime dateTime = new DateTime(date.getTime(), dtz);

Преобразовать из Joda Время даты в Java Дата:
Для обратного случая Joda DateTime имеет метод toDate(), который вернет дату java.util.

DateTime jodaDate = new DateTime();
java.util.Date date = jodaDate.toDate();

Подробнее... Посетите здесь