Quiero convertir de cadena a fecha usando Java 8.
Puedo convertir fácilmente usando el formato SimpleDateFormat
y yyyy-MM-dd
String startDate2="2017-03-24";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(new java.sql.Date(sdf1.parse(startDate2).getTime()));
salida: 2017-03-24
String startDate2="2017-03-24";
SimpleDateFormat sdf1 = new SimpleDateFormat("uuuu-MM-dd");
System.out.println(new java.sql.Date(sdf1.parse(startDate2).getTime()));
Pero cuando uso 'uuuu-MM-dd'
en lugar de 'yyyy-MM-dd'
salida: 1970-03-24
(incorrecto)
ahora en Java 8 :
String startDate1="2017-03-23";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd");
Pero no sé cómo puedo obtener la fecha que sería el tipo de fecha sql igual que la salida correcta anterior.
2 respuestas
java.sql.Date
tiene un método estático valueOf
que toma Java 8 LocalDate
para que pueda hacer:
String startDate1 = "2017-03-23";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd");
LocalDate date = LocalDate.parse(startDate1, formatter);
java.sql.Date sqlDate = java.sql.Date.valueOf(date);
Hasta donde puedo ver, tienes un texto en formato aaaa-MM-dd y lo quieres en formato uuuu-MM-dd. Entonces necesitas dos formatos:
String startDate2="2017-03-24";
SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat targetFormat = new SimpleDateFormat("uuuu-MM-dd");
java.sql.Date date = new java.sql.Date(sourceFormat.parse(startDate2).getTime());
String formattedAsDayOfWeek = targetFormat.format(date);
System.out.println(formattedAsDayOfWeek);
La conclusión es que Date
contiene un valor de milisegundos. java.sql.Date.toString()
usa el formato yyyy-MM-dd
independientemente de cómo lo haya analizado. java.util.sql.Date
usa otro formato: EEE MMM dd hh:mm:ss zzz yyyy
con inglés Locale
.
Puede hacer otro formato con DateFormat
-s.
Supongo que necesita el formato uuuu-MM-dd
para insertar datos en la base de datos. ¿Cómo se ve esa lógica?
Nuevas preguntas
java
Java es un lenguaje de programación de alto nivel. Utilice esta etiqueta cuando tenga problemas para usar o comprender el idioma en sí. Esta etiqueta rara vez se usa sola y se usa con mayor frecuencia junto con [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] y [maven].