Though this is not necessarily for a specific problem, I have created a class through which we can make some operations on given date like add days, add seconds or find the difference between two dates by day,hour,min & sec etc..
I have create a class and sample code for various operations.
Here is a sample code for the various manipulation in given date object.
////////////////////////////// Sample Code Start /////////////////////////////////////////////
var dateTarget : Date = new Date(2010,4,8,11,42,30);
var dateActual : Date = new Date();
var diffObj : Object = ManageDate.getDiff(dateTarget, dateActual);
if( Boolean( diffObj.swapBool ) )
trace ( "dateActual is greater than dateTarget by = " + diffObj.diffStr );
else
trace ( "dateTarget is greater than dateActual by = " + diffObj.diffStr );
var dateHour : Date = ManageDate.addHours( new Date(),15 );
trace ( "New date by adding Hour : " + dateHour );
var dateSec : Date = ManageDate.addSeconds( new Date(),150 );
trace ( "New date by adding Sec : " + dateSec );
var dayStr : String = ManageDate.getDayString( new Date());
trace ( "Today is : " + dayStr );
//////////////////////// End Sample Code /////////////////////////////////////////////////////
Class which manipulate date object
////////////////////////////// Class Start ///////////////////////////////////////////////////////////
package
{
public class ManageDate
{
public static function addWeeks(date:Date, weeks:Number):Date {
return addDays(date, weeks*7);
}
public static function addDays(date:Date, days:Number):Date {
return addHours(date, days*24);
}
public static function addHours(date:Date, hrs:Number):Date {
return addMinutes(date, hrs*60);
}
public static function addMinutes(date:Date, mins:Number):Date {
return addSeconds(date, mins*60);
}
public static function addSeconds(date:Date, secs:Number):Date {
var mSecs:Number = secs * 1000;
var sum:Number = mSecs + date.getTime();
return new Date(sum);
}
public static function getDiff(dateTarget:Date, dateActual:Date):Object {
var MILLISECONDS_PER_DAY:int = 1000 * 60 * 60 * 24;
var MILLISECONDS_PER_HOUR:int = 1000 * 60 * 60;
var MILLISECONDS_PER_MIN:int = 1000 * 60;
var MILLISECONDS_PER_SEC:int = 1000;
var diff:Number = dateTarget.getTime()- dateActual.getTime();
var swapBool : Boolean = false;
if(diff < 0)
{
// in case of dateActual is bigger than dateTarget so swap it
swapBool = true;
var td : Date = dateActual;
dateActual = dateTarget;
dateTarget = td;
diff = dateTarget.getTime()- dateActual.getTime();
}
var num:Number = diff/MILLISECONDS_PER_DAY;
var d : int = Math.floor(num);
var str : String = "Day:" + d.toString();
diff = diff - ( d* MILLISECONDS_PER_DAY );
num = diff/MILLISECONDS_PER_HOUR;
var h : int = Math.floor(num); // Hour diff
str += " Hour:" + h.toString();
diff = diff - ( h* MILLISECONDS_PER_HOUR );
num = diff/MILLISECONDS_PER_MIN;
var m : int = Math.floor(num); // Min diff
str += " Min:" + m.toString();
diff = diff - ( m* MILLISECONDS_PER_MIN );
num = diff/MILLISECONDS_PER_SEC;
var s : int = Math.floor(num); // Sec diff
str += " Sec:" + s.toString();
var retObj : Object = new Object();
retObj.diffStr = str; // it my require string in own format u can modify by own way
retObj.swapBool = swapBool; // in case a date need to be swap
return retObj;
}
public static function getDayString(date:Date):String {
var c : int = date.day;
var str:String = null;
switch(c)
{
case 0:
str = "Sunday";
break;
case 1:
str = "Monday";
break;
case 2:
str = "Tuesday";
break;
case 3:
str = "Wednesday";
break;
case 4:
str = "Thursday";
break;
case 5:
str = "Friday";
break;
case 6:
str = "Saturday";
break;
default:
break;
}
return str;
}
public static function checkDate(d1:Date, d2:Date):Boolean {
if(d2.getFullYear() > d1.getFullYear())
{ return true; }
else if(d2.getFullYear() == d1.getFullYear()) {
if(d2.month > d1.month)
{ return true; }
else if(d2.month == d1.month) {
if(d2.date >= d1.date)
{ return true; }
else
{ return false; }
}
else
{ return false; }
}
else
{ return false; }
}
}
}
///////////////////////////// Class End /////////////////////////////////////////////////////
The above may be used for various date operations.
Regards,
Virat Patel
+