Как переобразовать строку даты в формат yyyy/mm/dd в Java?

Есть поле, которое вытягивается из json и принимает значения вида 2022-12-19T14:56:41.362Z. Как преобразовать ее в формат yyyy-mm-dd? Изначально вытягивается строка groovy(через def), но преобразовывать строки можно java.


Ответы (2 шт):

Автор решения: Дмитрий

В целом все зависит от задач. Ваша переменная типа String, фактически является датой/временем/часовым поясом. В идеальном мире неплохо бы, чтобы контекст переменной соответствовал ее типу, ведь в этом случае доступен специфический функционал переменной конкретного типа (к примеру, для переменной типа даты можно без труда определить день недели, чего не скажешь про переменную типа String, которая хранит дату). Посему делаем так:

ZonedDateTime zonedDateTime = ZonedDateTime.parse(date);
String result = zonedDateTime.toLocalDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

zonedDateTime - ваша специфическая переменная, которую вы можете обработать любым способом, в том числе оставить одну дату и привести ее к String в нужном вам формате

→ Ссылка
Автор решения: Nowhere Man

Если формат данных в строке гарантирован, т.е. дата отделена символом T и представлена в формате yyyy-MM-dd, то достаточно использовать операции со строками:

public static convertFullISODateTime(String dateTime) {
    return dateTime.substring(0, dateTime.indexOf('T')).replace('-', '/');
}

Это решение быстрее/проще/эффективнее, чем преобразование строки в дату с последующим переформатированием как в ответе @Дмитрия, но "грязнее", так как не учитывает полностью контекст/часовой пояс.

→ Ссылка