Avg. Rating 4.5

Problem

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..

Solution

I have create a class and sample code for various operations.

Detailed explanation

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


+
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. Permissions beyond the scope of this license, pertaining to the examples of code included within this work are available at Adobe.

Report abuse

Related recipes