Tempo de análise no Flex
-
01-07-2019 - |
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.
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 ??li>
- 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