java .time
El enfoque moderno es con las clases java.time. Estos suplantan a las antiguas y problemáticas clases antiguas de fecha y hora como Date
, Calendar
y SimpleDateFormat
.
Parse como ZonedDateTime
.
String input = "Mon Jun 18 00:00:00 IST 2012";
DateTimeFormatter f = DateTimeFormatter.ofPattern("E MMM dd HH:mm:ss z uuuu")
.withLocale(Locale.US);
ZonedDateTime zdt = ZonedDateTime.parse(input , f);
Extraer un objeto de sólo fecha, un LocalDate
, sin cualquier momento del día y sin ningún tipo de zona horaria.
LocalDate ld = zdt.toLocalDate();
DateTimeFormatter fLocalDate = DateTimeFormatter.ofPattern("dd/MM/uuuu");
String output = ld.format(fLocalDate) ;
Volcar a la consola.
System.out.println("input: " + input);
System.out.println("zdt: " + zdt);
System.out.println("ld: " + ld);
System.out.println("output: " + output);
de entrada: Lun Jun 18 de 00:00:00 IST 2012
zdt: 2012-06-18T00: 00 + 03: 00 [Asia/Jerusalem]
ld: 2012 -06-18
de salida: 18/06/2012
ver este code run live in IdeOne.com.
mala elección del formato
Su formato es una mala elección para el intercambio de datos: difícil de leer por humanos, difícil de analizar por ordenador, utiliza códigos no estándar 3-4 de zona letra, y asume Inglés.
En su lugar, utilice los formatos estándar ISO 8601 siempre que sea posible. Las clases java.time usan los formatos ISO 8601 de forma predeterminada al analizar/generar valores de fecha y hora.
Especifique un proper time zone name en el formato de continent/region
, como America/Montreal
, Africa/Casablanca
, o Pacific/Auckland
. Nunca use la abreviatura de 3-4 letras como EST
o IST
ya que son no zonas horarias verdaderas, no estandarizadas, y ni siquiera únicas (!). Por ejemplo, su uso de IST
puede ser hora estándar irlandesa, hora estándar de Israel (según la interpretación de java.time, vista anteriormente) o hora estándar de la India.
Sobre java.time
El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
.
El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
¿Dónde obtener las clases java.time?
- Java SE 8 y SE 9 y más tarde
- incorporado.
- Parte de la API estándar de Java con una implementación integrada.
- Java 9 agrega algunas características menores y correcciones.
- Java SE 6 y SE 7
- Gran parte de la funcionalidad de back-java.time está portado a Java 6 & 7 en ThreeTen-Backport.
- Android
El proyecto se extiende ThreeTen-Extra java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
y more.
Ver sección relacionada en esta página –
@Kazekage Gaara puede ver mi edición ahora, esperemos que sepa la respuesta. – SAR
De acuerdo con Tony, en lugar de votar un gran comentario, las personas pueden intentar responder si no permiten que otros respondan. – SAR