Tengo una variable LocalDate llamada fecha, cuando la imprimo muestra 1988-05-05. Necesito convertir esto para que se imprima como 05.mayo 1988. ¿Cómo hacer esto?
Tengo una variable LocalDate llamada fecha, cuando la imprimo muestra 1988-05-05. Necesito convertir esto para que se imprima como 05.mayo 1988. ¿Cómo hacer esto?
Respuestas:
SimpleDateFormat no funcionará si está comenzando con LocalDate, que es nuevo en Java 8. Por lo que puedo ver, tendrá que usar DateTimeFormatter, http://docs.oracle.com/javase/8/docs/api/java/ hora / formato / DateTimeFormatter.html .
LocalDate localDate = LocalDate.now();//For reference
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy");
String formattedString = localDate.format(formatter);
Debería imprimirse el 05 de mayo de 1988. Para obtener el período posterior al día y antes del mes, es posible que deba usar "dd'.LLLL aaaa"
Con la ayuda de las publicaciones de ProgrammersBlock se me ocurrió esto. Mis necesidades eran ligeramente diferentes. Necesitaba tomar una cadena y devolverla como un objeto LocalDate. Me entregaron el código que usaba el Calendario anterior y SimpleDateFormat. Quería hacerlo un poco más actual. Esto es lo que se me ocurrió.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
void ExampleFormatDate() {
LocalDate formattedDate = null; //Declare LocalDate variable to receive the formatted date.
DateTimeFormatter dateTimeFormatter; //Declare date formatter
String rawDate = "2000-01-01"; //Test string that holds a date to format and parse.
dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE;
//formattedDate.parse(String string) wraps the String.format(String string, DateTimeFormatter format) method.
//First, the rawDate string is formatted according to DateTimeFormatter. Second, that formatted string is parsed into
//the LocalDate formattedDate object.
formattedDate = formattedDate.parse(String.format(rawDate, dateTimeFormatter));
}
Espero que esto ayude a alguien, si alguien ve una mejor manera de hacer esta tarea, agregue su opinión.
LocalDate.parse(rawDate)¡ solo ! String.formatse está utilizando en una forma totalmente incorrecta aquí, en realidad solo devuelve la primera cadena; el DateTimeFormatterno se está utilizando en absoluto; parsees un staticmétodo de LocalDate; formattedDatees no una fecha con formato, ni siquiera un String(a lo solicitado en cuestión)
Hay una forma integrada de formatear LocalDate para joda lib
import org.joda.time.LocalDate;
LocalDate localDate = LocalDate.now();
String dateFormat = "MM/dd/yyyy";
localDate.toString(dateFormat);
En caso de que aún no lo tenga, agregue esto a build.gradle:
implementation 'joda-time:joda-time:2.9.5'
¡Feliz codificación! :)
Una forma bastante agradable de hacer esto es usar SimpleDateFormat. Te mostraré cómo:
SimpleDateFormat sdf = new SimpleDateFormat("d MMMM YYYY");
Date d = new Date();
sdf.format(d);
Veo que tienes la fecha en una variable:
sdf.format(variable_name);
Salud.
LocalDateinstancia en un formato específico. ¿Cómo podría SimpleDateFormatayudarlo aquí?
Strings.