Наш архитектор программного обеспечения принял решение удалить библиотеку времени Joda из зависимостей проекта и использовать возможности Java 8 раз. Я занимаюсь исследованием нашего проекта, и я пытаюсь найти все места, где мы используем Joda time lib, и определить, что мы используем (joda LocalDate
, DateTime
и т. Д.).
Я не являюсь экспертом библиотеки времени Joda, и я не эксперт Java 8 раз, поэтому у меня есть несколько вопросов:
В коде я видел много мест, как это:мигрировать из библиотеки времени Joda в Java time (Java 8)
DateTime jodaDateTime = new DateTime();
doSomething(jodaDateTime.toDate());
Я немного путают.
(Q1) Есть ли какой-либо смысл использовать Joda DateTime
в данном конкретном случае? Я считаю, что мы можем использовать только классические java.util.Date
и нам не нужно Joda:
java.util.Date date = new Date();
doSomething(date);
Правильно?
Кроме того, я видел этот кусок кода:
org.joda.time.DateTime jodaDateTime = new DateTime();
org.joda.time.DateTime jodaDateTimeInPast = jodaDateTime.minusSeconds(60);
doSomething(jodaDateTimeInPast.toDate());
Я думаю, что Java 8 раз API обеспечивает большую поддержку для расчета каких-либо дат в прошлом, так что я знаю, как заменить кусок код выше Java 8:
LocalDatetime java8DateTime = LocalDateTime.now();
LocaldateTime java8DateTimeInPast = java8DateTime.minusSeconds(60);
Date java8Date = Date.from(java8DateTimeInPast.atZone(ZoneId.systemDefault()).toInstant());
doSomething(java8Date);
(Q2) Я сделал это в правильном направлении? Я не уверен на 100%. Я просто нашел эту ссылку с таблицей: «Converting from Joda-Time to java.time» Есть я нашел информацию, что мне нужно использовать java.time.ZonedDateTime
или java.time.OffsetDateTime
классы, но не java.time.LocalDateTime
, потому что LocalDateTime
-
Та же концепция - дата и время без часовой пояс
Пожалуйста, подтвердите, что мой рефакторинга правильно (для Q1 и Q2).
Вы писали: «Мгновенное действие - это самое близкое совпадение с java.util.Date», но, например: new Date(). ToString() возвращает: Thu Jan 28 18:26:27 EET 2016, но Instant.now(). toString() возвращает: 2016-01-28T16: 26: 27.210Z. Как вы можете видеть, Instant возвращает 16:26:27, и это UTC, Date возвращает 18:26:27 - EET – user471011
'toString()' on 'java.util.Date' возвращает время в локальной часовой зоне , Но состояние объекта не выдерживает этого. Понимание этой разницы является ключом к пониманию 'java.util.Date'. – JodaStephen