Use LocalDateTime#parse()(o ZonedDateTime#parse()si la cadena contiene una parte de zona horaria) para analizar Stringun cierto patrón en un 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()(o ZonedDateTime#format()) para formatear un LocalDateTimea Stringen un cierto patrón.
String newstring = datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println(newstring); // 2011-01-18
O , cuando aún no está en Java 8, use SimpleDateFormat#parse()para analizar Stringun cierto patrón en un Date.
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 formatear un Datea Stringen un cierto patrón.
String newstring = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println(newstring); // 2011-01-18
Ver también:
Actualización : según su intento fallido: los patrones distinguen entre mayúsculas y minúsculas . Lea el java.text.SimpleDateFormatjavadoc que significan las partes individuales. Así se destaca, por ejemplo, Mdurante meses y mminutos. Además, existen años de cuatro dígitosyyyy , no cinco yyyyy. Mire más de cerca los fragmentos de código que publiqué aquí arriba.