Да, Использовать Joda-Time
Определенно используйте Joda-Time или java.time package на Java 8 (вдохновленный Joda-Time). Старые классы java.util.Date
и java.util.Calendar
, как известно, являются неприятными, запутанными и устаревшими.
Также читайте на страницах Википедии UTC и ISO 8601.
Да, Pass Дата Для Joda-Time Конструктора
➔ Да, действительно, вы можете передать java.util.Date
объект в constructor в виде Joda-Time DateTime
объекта.
Документ API немного запутан, так как это, очевидно, попадает в полную версию конструктора, использующего экземпляр java.lang.Object
. Если этот объект фактически является java.util.Date
, Joda-Time будет извлекать свой миллисекунд-счет-с-epoch и использовать его как свое.
часового пояса
DateTime
Конструктор также назначает часовой пояс. По умолчанию назначается текущий часовой пояс JVM. Я рекомендую вам всегда передать желаемый часовой пояс, а не полагаться неявно на значение по умолчанию, даже если это означает вызов getDefault
.
Пример кода
Вот несколько примеров кода в Joda-Time 2.5, показывающий, как передать java.util.Date в конструктор Joda-Time.
java.util.Date date = new java.util.Date();
DateTimeZone zone = DateTimeZone.forID("America/Montreal");
DateTime dateTimeMontreal = new DateTime(date , zone);
DateTime dateTimeUtc = dateTimeMontreal.withZone(DateTimeZone.UTC); // Adjust to another time zone.
Дамп для консоли.
System.out.println("date: " + date); // Misleading output. A j.u.Date is in UTC but its toString method applies JVM’s current default time zone.
System.out.println("dateTimeMontreal: " + dateTimeMontreal);
System.out.println("dateTimeUtc: " + dateTimeUtc);
При запуске.
date: Sat Oct 18 18:54:55 PDT 2014
dateTimeMontreal: 2014-10-18T21:54:55.740-04:00
dateTimeUtc: 2014-10-19T01:54:55.740Z
Как показано в вопросе, чтобы перейти от DateTime к java.util.Date, вызовите toDate
.
java.util.Date date = dateTimeMontreal.toDate();
возможное дублирование http://stackoverflow.com/questions/5042587/convert-from-java-util-date-to-jodatime – Xorty
Хорошо, это работает, спасибо, но по апи нет такого конструктор, который принимает дату ... Еще раз спасибо, может быть, я что-то неправильно понял. – cscsaba
Добро пожаловать :) – Xorty