fecha - pasar de string a date java
¿Cómo convertir un instantáneo a un formato de fecha? (4)
Esta pregunta ya tiene una respuesta aquí:
- Formato Instantáneo a Cadena 6 respuestas
Puedo convertir un
java.util.Date
a un
java.time.Instant
(Java 8 y posterior) de esta manera:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 8);
cal.set(Calendar.MINUTE, 30);
Date startTime = cal.getTime();
Instant i = startTime.toInstant();
¿Alguien puede informarme sobre la conversión de ese instante a la fecha con un formato de fecha y hora específico? es decir, 2015-06-02 8:30:00
He pasado por la API pero no pude encontrar una respuesta satisfactoria.
Si desea convertir un
Instant
en una
Date
:
Date myDate = Date.from(instant);
Y luego puede usar
SimpleDateFormat
para la parte de formato de su pregunta:
SimpleDateFormat formatter = new SimpleDateFormat("dd MM yyyy HH:mm:ss");
String formattedDate = formatter.format(myDate);
Un instante es lo que dice: un instante específico en el tiempo, no tiene la noción de fecha y hora (la hora en Nueva York y Tokio no es la misma en un instante dado).
Para imprimirlo como fecha / hora, primero debe decidir qué zona horaria usar. Por ejemplo:
System.out.println(LocalDateTime.ofInstant(i, ZoneOffset.UTC));
Esto imprimirá la fecha / hora en formato iso:
2015-06-02T10:15:02.325
Si desea un formato diferente, puede usar un formateador:
LocalDateTime datetime = LocalDateTime.ofInstant(i, ZoneOffset.UTC);
String formatted = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(datetime);
System.out.println(formatted);
intente analizar y formatear
Tome un ejemplo de análisis
String input = ...;
try {
DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("MMM d yyyy");
LocalDate date = LocalDate.parse(input, formatter);
System.out.printf("%s%n", date);
}
catch (DateTimeParseException exc) {
System.out.printf("%s is not parsable!%n", input);
throw exc; // Rethrow the exception.
}
Formateo
ZoneId leavingZone = ...;
ZonedDateTime departure = ...;
try {
DateTimeFormatter format = DateTimeFormatter.ofPattern("MMM d yyyy hh:mm a");
String out = departure.format(format);
System.out.printf("LEAVING: %s (%s)%n", out, leavingZone);
}
catch (DateTimeException exc) {
System.out.printf("%s can''t be formatted!%n", departure);
throw exc;
}
El resultado de este ejemplo, que imprime tanto la hora de llegada como la de salida, es el siguiente:
LEAVING: Jul 20 2013 07:30 PM (America/Los_Angeles)
ARRIVING: Jul 21 2013 10:20 PM (Asia/Tokyo)
Para obtener más detalles, consulte esta página: https://docs.oracle.com/javase/tutorial/datetime/iso/format.html
Instant i = Instant.ofEpochSecond(cal.getTime);