Foros del Web » Programación para mayores de 30 ;) » Java »

De String a Calendar con este formato

Estas en el tema de De String a Calendar con este formato en el foro de Java en Foros del Web. Hola, digamos que guardo una fecha y hora en un string con este formato: "2014-07-11T10:27:45+02:00" ¿Qué tendría que hacer para pasarla a un Calendar? Gracias ...
  #1 (permalink)  
Antiguo 11/07/2014, 03:13
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
De String a Calendar con este formato

Hola, digamos que guardo una fecha y hora en un string con este formato: "2014-07-11T10:27:45+02:00"

¿Qué tendría que hacer para pasarla a un Calendar? Gracias y un saludo ;)
  #2 (permalink)  
Antiguo 11/07/2014, 04:33
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: De String a Calendar con este formato

Hola:

Mira a ver esto

Calendar cal = javax.xml.bind.DatatypeConverter.parseDateTime("20 14-07-11T10:27:45+02:00")

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 14/07/2014, 15:17
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: De String a Calendar con este formato

Parece que funciona bien, muchas gracias por tu ayuda.
  #4 (permalink)  
Antiguo 16/07/2014, 06:00
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: De String a Calendar con este formato

Ups, creo que me alegré demasiado pronto. Ocurre que, aunque esa solución iba bien en el entorno de pruebas que usaba, no me vale en el entorno de desarrollo porque aquí estoy sujeto a usar Java 1.5 y la primera versión de las librerías JAXB.

Por tanto, no tengo disponible la función "parseDateTime()". ¿Hay alguna otra forma?
  #5 (permalink)  
Antiguo 16/07/2014, 06:50
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: De String a Calendar con este formato

jaxb viene incluida en java desde java 6, pero puede descargarse por separado para versiones anteriores y esa clase (supongo que el método también), esta disponible desde JAXB 1 .

¿No puedes poner ese jar como dependencia de tu proyecto?

La librería joda time también tiene esta conversión, si no puedes o quieres poner jaxb, aunque sería otra librería distinta.

Y si no puedes poner librerías adicionales, no tendrás más remedio que hacerte el parser a mano. java no es capaz de leer ese formato. Aquí lo tienes hecho http://www.java2s.com/Code/Java/Data...ingutility.htm

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 16/07/2014, 07:08
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: De String a Calendar con este formato

Ya no estoy tan seguro de que sea cosa de las librerías; el caso es que me salta un NPE "at javax.xml.bind.DatatypeConverter.parseDateTime(Dat atypeConverter.java:263)". No tengo acceso a los fuentes de esa clase, pero me suenta bastante raro.
  #7 (permalink)  
Antiguo 16/07/2014, 07:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: De String a Calendar con este formato

Hola:

Puede ser que le estés pasando un String null. Si lo hago, a mí me sale esta excepcion

Exception in thread "main" java.lang.NullPointerException
at javax.xml.bind.WhiteSpaceProcessor.trim(Unknown Source)
at javax.xml.bind.DatatypeConverterImpl._parseDateTim e(Unknown Source)
at javax.xml.bind.DatatypeConverterImpl.parseDateTime (Unknown Source)
at javax.xml.bind.DatatypeConverter.parseDateTime(Unk nown Source)

Si no tuvieras la clase o el método la excepción sería algo como ClassNotFound o NoSuchMethodException.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #8 (permalink)  
Antiguo 17/07/2014, 01:03
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: De String a Calendar con este formato

No se, si es que le paso directamente una cadena de texto. La llamada es exactamente así:

Calendar fecha = javax.xml.bind.DatatypeConverter.parseDateTime("20 14-07-11T10:27:45+02:00");

No veo de dónde puede surgir el nulo.
  #9 (permalink)  
Antiguo 17/07/2014, 01:46
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: De String a Calendar con este formato

Pon la excepción completa a ver.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #10 (permalink)  
Antiguo 17/07/2014, 02:28
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: De String a Calendar con este formato

Muy bien:

[17/07/2014 10:30:41] - ERROR [jsp].invoke: Servlet.service() para servlet jsp lanzó excepción
java.lang.NullPointerException
at javax.xml.bind.DatatypeConverter.parseDateTime(Dat atypeConverter.java:263)
at globales.filtros.CargarAgencias.pruebaWS(CargarAge ncias.java:200) <- Aquí hago la llamada
at globales.filtros.CargarAgencias.getDatosVuelta(Car garAgencias.java:187)
at org.apache.jsp.jsp.inicio.COM_005finitApp_jsp._jsp Service(COM_005finitApp_jsp.java:320)
at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:729)
at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:331)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:329)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:729)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:188)
at globales.FiltroAutenticacion.doFilter(FiltroAutent icacion.java:57)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11 ConnectionHandler.processConnection(Http11BaseProt ocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
  #11 (permalink)  
Antiguo 17/07/2014, 03:38
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: De String a Calendar con este formato

Hola:

Estoy viendo que en algunas versiones de jaxb, antes de usar ese método, es necesario hacer una llamada a

setDatatypeConverter.setDatatypeConverter(Datatype ConverterInterface);

En la versión de jaxb que tengo yo no es necesario, puesto que se inicializa por defecto con una instancia de DatatypeConverterImpl que imagino implementa DatatypeConverterInterface. Mira a ver si tienes esa clase y puedes hacer la llamada.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #12 (permalink)  
Antiguo 17/07/2014, 04:23
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: De String a Calendar con este formato

¿No sería más algo como:

DatatypeConverter.setDatatypeConverter(xxxxx);

Pero no tengo claro qué pasar como parámetro.
  #13 (permalink)  
Antiguo 17/07/2014, 05:50
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: De String a Calendar con este formato

Pues lo que te he dicho, una instancia de una clase que implemente DatatypeConverterInterface y que en mi caso se hace por defecto y es una instancia de una clase DatatypeConverterImpl, que no sé si tienes o no disponible. Posiblemente la tenga en alguna version de jaxb (no sé si la version 1 que dices que usas la tiene o no).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #14 (permalink)  
Antiguo 17/07/2014, 07:02
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: De String a Calendar con este formato

Dispongo de esa clase en mis librerías, pero si intento hacer

DatatypeConverter.setDatatypeConverter(new DatatypeConverterImpl());

me aparece un error diciendo que el método constructor no es visible.
  #15 (permalink)  
Antiguo 17/07/2014, 07:41
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: De String a Calendar con este formato

Mira a ver si en vez de la llamada original puedes hacer esta

Calendar cal = DatatypeConverterImpl.parseDateTime("tu cadena")

Creo que está obsoleta, pero si funciona ya esta. En general esta obsoleta porque la clase que tu tienes debe ser del paquete com.sun.xml.bind y la documentación dice que en su lugar se use la del paquete javax.xml.bind

Ahi va el fuente de la clase (no sé si es la que tienes tú), para que puedas ver posibles métodos https://svn.java.net/svn/jaxb~versio...erterImpl.java

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #16 (permalink)  
Antiguo 18/07/2014, 01:31
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: De String a Calendar con este formato

Pues me temo que no me deja usarla: "Cannot make a static reference to the non-static method parseDateTime(String) from the type DatatypeConverterImpl"

Una cosa: aunque no puedo actualizar librerías ya existentes, quizá sí pueda añadir nuevas. Mencionaste antes una librería llamada joda time; ¿se usaría de un modo similar?

Saludos.
  #17 (permalink)  
Antiguo 18/07/2014, 01:54
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: De String a Calendar con este formato

Ok, el método ese no es static, prueba a llamarlo con _ delante, que si miras el enlace que te puse, ese es public y static.

No he usado joda time, pero sé que admite ese tipo de formato de fechas, tendrás que mirar cómo se usa.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #18 (permalink)  
Antiguo 18/07/2014, 04:13
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: De String a Calendar con este formato

Nada, me dice que no existe el método.

Yo creo que no me va a quedar más remedio que mirar a ver cómo va la otra librería, espero que sea fácil de usar.

Muchas gracias por tu ayuda!

Etiquetas: formato, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:26.