2010-07-21 28 views
6

Perdí mucho tiempo en esto, así que estoy publicando la pregunta y respondiendo por lo que aprendí, como un recurso para ayudar a otras personas. El contexto del problema es construir un lector de RSS. Si bien se supone que las fechas RSS se ajustan a RFC822, lo hacen de diferentes maneras, por lo que desea un método flexible. Intenté usar GWT DateTimeFormat así como codificar algunas máscaras diferentes, pero seguí encontrando casos de prueba que rompieron mi código. Finalmente tropecé con la solución elegante:¿Cómo se analizan las fechas en GWT?

Envuelva una llamada al método de javascript Date.parse(). realmente "simplemente funciona".

Como una metateoría, que intentaré probar mientras continúo desarrollando, probablemente haya muchas cosas que "simplemente funcionan" al usar javascript nativo o tal vez otras bibliotecas en lugar de intentar usar brute forzarlo usando Java en GWT.

¡Salud!

+5

¡Buen consejo! Como nota al margen, la forma más común de publicar una pregunta y respuesta en este sitio es publicar primero la pregunta y luego publicar la respuesta en el campo de respuesta. Podrá marcarlo como la respuesta aceptada (aunque no de inmediato) y le da a otros la oportunidad de publicar sus propios enfoques para resolver el problema. – pkaeding

Respuesta

3

Utilice el manejo de JavaScript nativo de JSNI para envolver una llamada al método de javascript Date.parse(). Puede manejar muchos formatos más que DateTimeFormat de GWT.

El siguiente código muestra una demostración. Tenga en cuenta que GWT no permite javascript pasando valores largos, así que usé toString para hackear eso.

 public native String webDateToMilliSec(String webDate) /*-{ 
     var longDate = Date.parse(webDate); 
     return longDate.toString(); 
     }-*/; 

     public long getTimeStamp(final Element el) { 
      String sDate = getValueIfPresent(el, "pubDate"); 
      String sLongDate = webDateToMilliSec(sDate); 
      long longDate = Long.parseLong(sLongDate); 
      return longDate; 
     } 
+0

¿Hay algún elemento específico del navegador que deberíamos estar buscando? También podría refinar su respuesta agregando algún código de muestra (sé que es básico, pero como ya lo escribió, ¿por qué no compartirlo?;)) –

Cuestiones relacionadas