Use LocalDateTime#parse()
(ou ZonedDateTime#parse()
se a sequência contiver uma parte do fuso horário) para analisar umString
em um determinado padrão em a LocalDateTime
.
String oldstring = "2011-01-18 00:00:00.0";
LocalDateTime datetime = LocalDateTime.parse(oldstring, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"));
Use LocalDateTime#format()
(ou ZonedDateTime#format()
) para formatar a LocalDateTime
em um String
em um determinado padrão.
String newstring = datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println(newstring); // 2011-01-18
Ou , quando você ainda não estiver no Java 8, use SimpleDateFormat#parse()
para analisar a String
em um determinado padrão em umaDate
.
String oldstring = "2011-01-18 00:00:00.0";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(oldstring);
Use SimpleDateFormat#format()
para formatar a Date
emString
em um determinado padrão.
String newstring = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println(newstring); // 2011-01-18
Veja também:
Atualização : conforme sua tentativa falhada: os padrões diferenciam maiúsculas de minúsculas . Leia o java.text.SimpleDateFormat
javadoc sobre o que as partes individuais representam. Assim, por exemplo, M
durante meses e m
minutos. Além disso, existem anos de quatro dígitos yyyy
, não cinco yyyyy
. Veja mais de perto os trechos de código que eu postei aqui acima.