2010-07-21 10 views
6

Ho perso molto tempo su questo, quindi sto postando la domanda e rispondendo da ciò che ho imparato, come risorsa per aiutare le altre persone. Il contesto del problema è la costruzione di un lettore RSS. Mentre le date RSS dovrebbero essere conformi a RFC822, lo fanno in modi diversi, quindi si desidera un metodo flessibile. Ho provato a utilizzare GWT DateTimeFormat oltre a codificare alcune maschere diverse ma ho continuato a trovare i test che hanno infranto il mio codice. Alla fine mi sono imbattuto nella soluzione elegante:Come analizzare le date in GWT?

Termina una chiamata al metodo javascript Date.parse(). in realtà "funziona".

Come una meta-teoria, che proverò a testare mentre continuo a sviluppare, ci sono probabilmente un sacco di cose che "funzionano" semplicemente usando javascript nativi o forse altre librerie là fuori invece di provare a fare brute forzarlo usando Java in GWT.

Cheers!

+5

Buon consiglio! Come nota a margine, il modo più comune per pubblicare una domanda e una risposta su questo sito è di pubblicare prima la domanda, e quindi di inserire la risposta nel campo della risposta. Sarai in grado di contrassegnarlo come risposta accettata (anche se non subito) e darà agli altri la possibilità di pubblicare i propri approcci per risolvere il problema. – pkaeding

risposta

3

Utilizzare la gestione javascript nativa JSNI per eseguire il wrap di una chiamata al metodo javascript Date.parse(). Può gestire molti più formati rispetto a DateTimeFormat di GWT.

Il codice seguente fornisce una demo. Avviso GWT non consente javascript che trasmetta valori lunghi, quindi ho usato toString per aggirarlo.

 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

Ci sono dei contenuti specifici del browser che dovremmo cercare? Youd potrebbe anche affinare la tua risposta aggiungendo del codice di esempio (so che è roba di base, ma siccome l'hai già scritto, perché non condividerlo?;)) –

Problemi correlati