Esta es una pequeña clase que hice para manejar las fechas, saber la diferencia, cual es mayor y viceversa.
Código :
package
{
public class dateUtils
{
static public const SENCONDS:uint = 2;
static public const MINUTES:uint = 3;
static public const HOURS:uint = 4;
/**
*
* @param date1 fecha a comparar
* @param date2 fecha a comparar
* @param unit Unidad en que se quiere devolver la diferencia.
* @return Number Con la diferencia en la unidad pedida
*/
static public function dateDiff( date1:Date, date2:Date, unit:uint):Number
{
var _divisor : Number = 1000*(unit==dateUtils.SENCONDS?1:(unit==dateUtils.MINUTES?60:(unit==dateUtils.HOURS?(60*60):(60*60*60))));
var _dif:Number = (date1.getTime()-date2.getTime()) / ( _divisor );
return Math.abs(_dif);
}
/**
* Devuelve la menor de las fechas pasadas por parametro.
* @param ...args Arreglo que contiene todas las fechas pasadas por parametro
* @return Fecha menor.
*/
static public function minorDate( ...args ):Date
{
args.sort( _orderDatesFunction );
return args[0];
}
/**
* Devuelve la mayor de las fechas pasadas por parametro.
* @param ...args Arreglo que contiene todas las fechas pasadas por parametro
* @return Fecha mayor.
*/
static public function mayorDate( ...args:Array ):Date
{
args.sort( _orderDatesFunction );
return args[ args.length-1 ];
}
/**
* Funcion para comparar 2 fechas. 'Usado en funcion sort del array'
* @param date1
* @param date2
* @return
*/
static private function _orderDatesFunction( date1:Date, date2:Date ):Number
{
if( date1 > date2 ) return 1;
else if( date1 < date2 ) return 0;
else return -1;
}
}
}Código :
/** Hallando la diferencia entre 2 fechas **/
var fecha1:Date = new Date("2009/2/2 2:01 PM");
var fecha2:Date = new Date("2009/2/2 3:31 PM");
// Diferencia en minutos
trace( dateUtils.dateDiff( fecha1, fecha2, dateUtils.MINUTES );
// Diferencia en horas
trace( dateUtils.dateDiff( fecha1, fecha2, dateUtils.HOURS );
/** Hallando la menor y la mayor de todas las fechas **/
var fecha3:Date = new Date("1982/9/9 2:00 AM");
var fecha3:Date = new Date("1972/9/9 4:00 PM");
var arreglo_de_fechas:Array = new Array( fecha1, fecha2, fecha3, fecha4 );
// La menor
trace( dateUtils.minorDate( arreglo_de_fechas ).toString() );
// La mayor
trace( dateUtils.mayorDate( arreglo_de_fechas ).toString() );
Código :
/**
* Adelanta la fecha n dias.
* @param date1 objeto fecha que se quiere adelantar un dia
* @param cantDays Indica la cantidad de dias que se quiere adelantar la fecha
* @param ceroHour Indica si se pone la fecha en la hora 0... es decir a las 12:00AM
* @return Objeto date con la fecha adelantada un dia.
*/
static public function nextDay( date1:Date, cantDays:uint, ceroHour:Boolean ):Date
{
date1.setDate( date1.getDate()+cantDays ); // Aqui paso para el otro dia....
if ( ceroHour ) date1 = dateUtils.resetTime( date1 );
return date1;
}
/**
* Atrasa la fecha n dias.
* @param date1 objeto fecha que se quiere atrasar un dia
* @param cantDays Indica la cantidad de dias que se quiere retrasar la fecha
* @param ceroHour Indica si se pone la fecha en la hora 0... es decir a las 12:00AM
* @return Objeto date con la fecha atrasada un dia.
*/
static public function prevDay( date1:Date, cantDays:uint, ceroHour:Boolean ):Date
{
date1.setDate( date1.getDate() - cantDays ); // Aqui paso para el dia anterior.
if ( ceroHour ) date1 = dateUtils.resetTime( date1 );
return date1;
}
/**
* Reseta la hora de una fecha a 12:00:00 AM. que es la hora inicial del dia....
* @param date1 Objeto date que se va a resetear.
* @return Date con la hora reseteada.
*/
static public function resetTime( date1:Date ):Date
{
date1.setHours(0); date1.setMinutes(0); date1.setMilliseconds(0);
return date1;
}Código :
/**
* Adelanta la fecha n dias.
* @param date1 objeto fecha que se quiere adelantar un dia
* @param cantDays Indica la cantidad de dias que se quiere adelantar la fecha
* @param ceroHour Indica si se pone la fecha en la hora 0... es decir a las 12:00AM
* @return Objeto date con la fecha adelantada un dia.
*/
static public function nextDay( date1:Date, cantDays:uint, ceroHour:Boolean ):Date
{
date1.setDate( date1.getDate()+cantDays ); // Aqui paso para el otro dia....
if ( ceroHour ) date1 = dateUtils.resetTime( date1 );
return date1;
}
/**
* Atrasa la fecha n dias.
* @param date1 objeto fecha que se quiere atrasar un dia
* @param cantDays Indica la cantidad de dias que se quiere retrasar la fecha
* @param ceroHour Indica si se pone la fecha en la hora 0... es decir a las 12:00AM
* @return Objeto date con la fecha atrasada un dia.
*/
static public function prevDay( date1:Date, cantDays:uint, ceroHour:Boolean ):Date
{
date1.setDate( date1.getDate() - cantDays ); // Aqui paso para el dia anterior.
if ( ceroHour ) date1 = dateUtils.resetTime( date1 );
return date1;
}
/**
* Reseta la hora de una fecha a 12:00:00 AM. que es la hora inicial del dia....
* @param date1 Objeto date que se va a resetear.
* @return Date con la hora reseteada.
*/
static public function resetTime( date1:Date ):Date
{
date1.setHours(0); date1.setMinutes(0); date1.setMilliseconds(0);
return date1;
}