tl; др
java.util.Date.from(
LocalDate.parse("2017-01-23")
.atStartOfDay(ZoneId.of("America/Montreal"))
.toInstant()
)
Нет необходимости форматирования рисунка
Нет шаблон форматирования необходимо. Ваша входная строка находится в стандартном формате ISO 8601. Эти стандартные форматы используются по умолчанию в классах java.time для синтаксического анализа и генерации строк.
LocalDate
Использование LocalDate
для даты только значения, без времени суток и без временной зоны.
LocalDate ld = LocalDate.parse("2017-01-23");
ZonedDateTime
Если вы хотите дату и время, пусть java.time определить первый момент дня. Не предполагайте, что первый момент: 00:00:00
.
Для определения первого момента дня требуется часовой пояс. Дата меняется по всему миру по зонам.
ZoneId z = ZoneId.of("America/Montreal");
ZonedDateTime zdt = ld.atStartOfDay(z);
Если вы хотите, чтобы воспринимать этот момент через призму UTC, извлечь Instant
объект.
Instant instant = zdt.toInstant();
Instant
эквивалентно старому унаследованного класса java.util.Date
. Оба представляют момент на временной шкале в UTC. Современный класс имеет более точное разрешение, наносекунды, а не миллисекунды.
Избегайте java.util.Date
Как уже упоминалось другие, вы должны придерживаться современных классов java.time. Но если вам нужно, вы можете конвертировать. Посмотрите на новые методы, добавленные в старые классы.
java.util.Date d = java.util.Date.from(instant) ;
Редактировать сообщение, чтобы включить то, что вы пробовали, и почему это не работает – Janar
@Janar Я обновил вопрос. можете ли вы, пожалуйста, возместить его сейчас? – user1111880
В чем исключение, если вы просто обрабатываете его с помощью предложения 'try catch'? – Tacolibre