2010-02-23 41 views

Respuesta

28

Usted puede hacerlo de esta manera:

DateFormat format = new SimpleDateFormat("MMddyyHHmmss"); 
Date date = format.parse("022310141505"); 

pero me fuertemente recomendamos que utilice Joda Time lugar. Es una mejor biblioteca de fecha/hora por un largo camino. En particular, los formateadores/analizadores en Joda Time son seguros para subprocesos, por lo que puede reutilizarlos libre y estáticamente; java.text.SimpleDateFormatno es thread-safe, por lo que debe crear uno por subproceso o serializar el acceso a él con un bloque synchronized.

+0

solicitud suave.puede enviar un ejemplo. – Manu

+2

¿Ya lo hizo? – BalusC

+1

Supongo que se refiere a un ejemplo usando Joda Time ... – Fortega

1

utilice un SimpleDateFormat con una cadena de formato apropiada (tenga cuidado al usar las letras de formato correcto, mayúsculas y minúsculas tienen diferentes significados!).

+0

solicitud suave. ¿Podría usted pls publicar un ejemplo. – Manu

+0

cómo convertir lo anterior utilizando etiquetas JSTL – Manu

0

tl; dr

java.time.LocalDateTime.parse(
    "" , 
    DateTimeFormatter.ofPattern("MMdduuHHmmss") 
).format( 
    DateTimeFormatter.ofPattern("MM-dd-uu HH-mm-ss") 
) 

01-23-18 12-34-56

java.time

El enfoque moderno utiliza las clases java.time .

Defina un patrón de formato para que coincida con su cadena de entrada.

DateTimeFormatter f = DateTimeFormatter.ofPattern("MMdduuHHmmss") ; 

Su año de dos dígitos se interpretará como del siglo 21 (20xx).

Analizar como LocalDateTime porque su cadena de entrada carece de cualquier indicador de zona horaria o desplazamiento desde UTC.

LocalDateTime ldt = LocalDateTime.parse("" , f) ; 

ldt.toString(): 2018-01-23T12: 34: 56

generar una cadena en el formato deseado.

DateTimeFormatter fOut = DateTimeFormatter.ofPattern("MM-dd-uu HH-mm-ss") ; 
String output = ldt.format(fOut ); 

01-23-18 12-34-56

ISO 8601

Ambos de sus formatos son terribles, por múltiples razones.

Al serializar valores de fecha y hora, utilice los formatos estándar ISO 8601 siempre que sea posible.Están diseñados para ser prácticos, fáciles de analizar por máquina, fáciles de leer por los humanos en todas las culturas.

Para un tiempo de fecha y hora como el suyo, el T en el medio separa la porción de fecha de la parte de la hora del día.

2018-01-23T12: 34: 56


Sobre java.time

El marco java.time está integrado 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.

Cuestiones relacionadas