Muchas gracias por todas vuestras sugerencias, sinceramente. He de explicar algún detalle:
El DateField en realidad es un TextField con un mc_popup q contiene un DateChooser.
Al elegir un día lo manda al campo de texto y lo he formateado para que lo haga de acuerdo con el formato fecha de Base de Datos SQL (año-mes-dia), a donde va luego.
Osea que ya no hay que definir meses, ni duración de estos ni nada, gracias Ereb y JSMedia, pero en realidad es algo más sencillo.
Es coger la fecha elegida y partirla en tres trozos por "-" y decirle que el primer trozo se llama anio1, el segundo mes1 y el tercero dia1, para luego pasarlo a milisegundos con una constante y poder comparar dos fechas.
En el botón tengo este código que recoge las fechas:
Código :
on (release, keyPress "<Enter>") {
// creo los dos objetos Date con los datos introducidos
var fecha1:Date = new Date(anio1, mes1-1, dia1);
var fecha2:Date = new Date(anio2, mes2-1, dia2);
// llamo a la función que compara las fechas
compararFechas(fecha1, fecha2);
}
Que llama a esta función que las compara y devuelve la diferencia:
Código :
function compararFechas(fecha1:Date, fecha2:Date):Void {
// utilizamos la constante para dividir los milisegundos
// y convertirlos en días 1000*60*60*24=86400000
var constante:Number = 86400000;
var diferenciaDias:Number = Math.abs((fecha2.getTime()-fecha1.getTime())/constante);
//vemos cual es la más reciente
if (fecha1<fecha2) {
mensaje = "fecha2 mayor que fecha1, diferencia = "+diferenciaDias+" días";
} else if (fecha1>fecha2) {
mensaje = "fecha1 mayor que fecha2, diferencia = "+diferenciaDias+" días";
} else {
mensaje = "fecha1 igual que fecha2, diferencia = "+diferenciaDias+" días";
}
}
Sólo necesito mandarle las fechas descompuestas. Va más por el substr de Shogoki, pero como dice Hernan puede dar problemas.
Yo estaba pensando algo parecido, incluso más sencillo, que ya he usado en esta misma aplicación para traer fechas desde xml:
split("-")
Creo que tiene que ir por ahí. Y lo he intentado, pero aunque entiendo bastante el AS, no son tan capaz de escribirlo.
He escrito:
Código :
var params:Array = queryStrA.split("-", 3);
trace(params); // año,mes,dia
// params se establece como un array con tres elementos:
params[0] == ""; //año startDate_txt
params[1] == ""; //mes startDate_txt
params[2] == ""; //dia startDate_txt
var milisout:String = milisout;
endDate_txt = milisout;
var params:Array = queryStrB.split("-", 3);
trace(params); // año,mes,dia
// params se establece como un array con tres elementos:
params[0] == ""; //año endDate_txt
params[1] == ""; //mes endDate_txt
params[2] == ""; //dia endDate_txt
Pero no sé si va a parte, en el botón o dentro de la función.
Lo he puesto detro de la función.
Y luego el botón recogería:
Código :
on (release) {
// creo los dos objetos Date con los datos introducidos
var entrada:Date = new Date(queryStrA[0],queryStrA[1],queryStrA[2]);
var salida:Date = new Date(queryStrB[0],queryStrB[1],queryStrB[2]);
// llamo a la función que compara nuestras fechas
compararFechas(entrada, salida);
}
Pero falla.
Muchas gracias a todos, y perdonad que sea tan largo el post, o si pensáis que ya es demasiado pedir.
Saludos!