Pregunta

¿Hay alguna forma de analizar una cadena en el formato HH:MM en un objeto Fecha (u otro) utilizando las bibliotecas estándar?

Sé que puedo analizar algo como "17/09/2008 10:30" en un objeto Fecha usando

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

Pero quiero analizar solo las 10:30 por sí solo.El siguiente código no funcionará.

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

Sé que puedo usar una expresión regular personalizada para hacer esto con bastante facilidad, pero parece que esto debería ser posible usando la API Flex existente.

¿Fue útil?

Solución

Para responder a su pregunta específica:no, no hay una función de biblioteca para hacer lo que quieres hacer, pero tampoco hay una función de biblioteca para analizar fechas en formato ISO, en formato alemán, en formato sueco, fechas donde los años están en números romanos, etc.

¿Por qué no utilizar expresiones regulares?Para eso están.

Otros consejos

Si tiene que utilizar el formato exacto que especificó, deberá analizarlo usted mismo.

Aquí hay un ejemplo simple (no probado):

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]);

Si la hora no se expresa en formato de 24 horas, entonces no hay forma de verificar si es AM o PM (el código asumirá AM).

Como solución simple y gratuita, puede utilizar algunos métodos estáticos de DateField:

  • DateField.stringToDate(valueString:String, inputFormat:String):Fecha
  • DateField.dateToString(valor:Fecha, salidaFattern:Cadena):Cadena

Pero desafortunadamente no admiten horas/minutos/segundos (solo la fecha).

En tu caso específico:el objeto Fecha siempre contiene también información de "fecha".Si no es importante, ¿no podría simplemente concatenar una cadena de fecha estándar antes de analizarla?

¿Ha considerado anteponer "01/01/2000" a la cadena de tiempo y luego aplicar Fecha?

Alternativamente, probablemente haya un tokenizador que tomará la entrada y la dividirá en:brindándole una serie de cadenas que puede convertir a números enteros.Un tokenizador tampoco es difícil de escribir y puede ser divertido si no existe uno en flex.

-Adán

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top