Domanda

Esiste un modo per analizzare una stringa nel formato HH:MM in un oggetto Date (o altro) utilizzando le librerie standard?

So che posso analizzare qualcosa come "9/17/2008 10:30" in un oggetto Date usando

var date:Date = new Date(Date.parse("9/17/2008 10:30");

Ma voglio analizzare solo le 10:30 da solo.Il seguente codice non funzionerà.

var date:Date = new Date(Date.parse("10:30");

So che posso utilizzare un RegEx personalizzato per farlo abbastanza facilmente, ma sembra che ciò dovrebbe essere possibile utilizzando l'API Flex esistente.

È stato utile?

Soluzione

Per rispondere alla tua domanda specifica:no, non esiste una funzione di libreria per fare quello che vuoi fare, ma poi non esiste una funzione di libreria per analizzare le date nel formato ISO, nel formato tedesco, nel formato svedese, date in cui gli anni sono in numeri romani ecc.

Perché non utilizzare le espressioni regolari?E' a questo che servono.

Altri suggerimenti

Se devi utilizzare il formato esatto specificato, devi analizzarlo tu stesso.

Ecco un semplice esempio (non testato):

var str:String = "9/17/2008 10:30"

var items:Array = str.split(" ");
var dateElements:Array = items[0].split("/");
var timeElements:Array = items[1].split(":");

var n:Date = new Date(dateElements[2],
                        dateElements[0],
                        dateElements[1].
                        timeElements[0],
                        timeElements[1]);

Se l'ora non è espressa nel formato 24 ore, non è possibile verificare la presenza di AM o PM (il codice presuppone AM).

Come soluzione semplice e gratuita, potresti utilizzare alcuni metodi statici del DateField:

  • DateField.stringToDate(valueString:String, inputFormat:String):Data
  • DateField.dateToString(valore:Data, outputFattern:String):String

Ma sfortunatamente non supportano ore/minuti/secondi (solo la data).

Nel tuo caso specifico:l'oggetto Date contiene sempre anche un'informazione "data".se non è importante, non potresti semplicemente concatenare una stringa di data standard prima dell'analisi?

Hai considerato di anteporre "01/01/2000" alla stringa dell'ora e quindi di applicare la data?

In alternativa c'è probabilmente un tokenizzatore che prenderà l'input e lo dividerà in:dandoti una serie di stringhe che puoi convertire in numeri interi.Anche un tokenizzatore non è difficile da scrivere e può essere divertente se non ne esiste uno in flex.

-Adamo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top