Pergunta

Existe alguma maneira de analisar uma string no formato HH: MM em uma data (ou outro) objeto usando as bibliotecas padrão

Eu sei que posso analisar algo como "2008/09/17 10:30" em um objeto Date usando

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

Mas eu quero analisar apenas 10:30 por si só. O código a seguir não vai funcionar.

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

Eu sei que posso usar um personalizado RegEx para fazer isso facilmente, mas parece que isso deve ser possível usar a API do Flex existente.

Foi útil?

Solução

Para responder à sua específica pergunta: não, não há nenhuma função de biblioteca para fazer o que você quer fazer, mas então não há nenhuma função de biblioteca para analisar datas no formato ISO, sobre o formato alemão, sobre o formato sueco, datas em que a anos estão em algarismos romanos etc.

Por que não usar expressões regulares? Isso é o que eles são.

Outras dicas

Se você tem que usar o formato exato que você especificado, então você precisa analisá-lo você mesmo.

Aqui está um exemplo simples (não testado):

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 o tempo não é expressa em 24 de relógio, então não há nenhuma maneira de verificar para AM ou PM (código assumirá AM).

Como uma solução simples e livre, você poderia usar alguns métodos estáticos da DateField:

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

Mas, infelizmente, eles não suportam horas / minutos / segundos (apenas a data).

No seu caso específico: o objeto Date sempre contém também uma informação "data" .. se não é importante, você não pode simplesmente concatenar uma seqüência de data padrão antes da análise

Você já considerou prepending "01/01/2000" para a seqüência de tempo e, em seguida, aplicar Data?

Como alternativa há provavelmente um tokenizer que terá a entrada e dividi-la no: dando-lhe uma matriz de strings que você pode converter em números inteiros. A tokenizer não é difícil escrever, quer, e pode ser divertido se não existir em flex.

-Adam

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top