java.util.Date
.from(
Instant.parse(
"2020-01-21T02:16:51.8320Z"
)
)
.toString()
Остерегайтесь потери данных. Ваш ввод имеет четвертое число git десятичной дроби секунды. Это означает, микросекунды. Класс Instant
может справиться с этим. Но унаследованный класс Date
, о котором вы просили, не может и ограничен миллисекундами. Таким образом, любые микросекунды будут обрезаны, обрезаны до миллисекунд.
Ужасные классы наследия, такие как java.util.Date
, получили новых методов, облегчающих преобразование назад и вперед между современными java .time . Здесь мы используем Date.from( Instant )
для получения устаревшей даты из современной Instant
, проанализированной из вашего ввода.
Остерегайтесь, что Date
имеет много fl aws и проблем. Среди них поведение его toString
метода. Этот метод принимает значение Date
, которое является моментом в UT C, а затем применяет текущий часовой пояс JVM по умолчанию при генерации текста. Это создает иллюзию того, что этот часовой пояс является частью Date
.
. Я предлагаю вам избегать Date
полностью и использовать только java .time классы. Но мой код здесь отвечает на вопрос как задано.
Кроме того, желаемый формат вывода ужасен. Вместо этого использует стандартные форматы ISO 8601 для обмена данными. Для представления пользователю используйте DateTimeFormatter.ofLocalizedDateTime
. Обе эти темы неоднократно затрагивались при переполнении стека, поэтому ищите, чтобы узнать больше.