tl; dr
OffsetDateTime.parse("2011-10-06T12:00:00-08:00")
.format(
DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(Locale.US) // Or Locale.CANADA_FRENCH and such.
)
Oct 6, 2011
java.time
El enfoque moderno utiliza los java.time clases que suplantan los legados de edad clases de fecha y hora problemáticos.
La cadena de entrada está en un formato que cumple con el estándar ISO 8106. Las clases java.time usan estos formatos estándar de forma predeterminada al analizar/generar cadenas. Entonces no es necesario especificar un patrón de formateo.
Analizar como OffsetDateTime
porque sus cadenas de entrada incluyen un desplazamiento desde UTC pero no un huso horario.
OffsetDateTime odt = OffsetDateTime.parse("2011-10-06T12:00:00-08:00") ;
odt.toString(): 2011-10-06T12:00-08:00
generar una cadena en el formato deseado. Deje java.time localizar automáticamente en lugar de patrones de formato de código duro.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(Locale.US); // Or Locale.CANADA_FRENCH and such.
String output = odt.format(f);
output: Oct 6, 2011
Cuando seralizing un valor de fecha y hora como texto, utilice la norma ISO 8601 formatos en lugar de un formato localizada.
String output = odt.toLocalDate().toString() ;
2011-10-06
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 de 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, Java 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 Java SE 7
- Gran parte de la funcionalidad de back-java.time está portado a Java 6 & 7 en ThreeTen-Backport.
- Android
- Las versiones posteriores de las implementaciones de haces de Android de las clases java.time.
- Para Android anterior, el proyecto ThreeTenABP se adapta a ThreeTen-Backport (mencionado anteriormente). Ver How to use ThreeTenABP….
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.
La opción 'X' es lo que estaba buscando. Estaba leyendo los documentos de Java 6. Gracias – Wade
Por lo demás, no java7, puede intentar usar el 'javax.xml.bind.DatatypeConverter.parseDateTime (date)' y puede encontrar más información aquí en este blog http://ta.cnci.org/java -blogs/236-convert-date –