Critical Developers

Programmers Knowledge Base

Handy Useful DateTime Functions in jQuery/javascript


Handy Useful DateTime Functions in jQuery/javascript

NOTE:- Month in jQuery starts from 0(zero)

------------------------------------------------------------------------------------------
FUNCTION:- To Get Date in DD/MM/YYYY Format
INPUT:-       3/21/2013 2:30:00 PM
OUTPUT:-    21/3/2013
------------------------------------------------------------------------------------------
function getDDMMYYYY(date) {
    dy = new Date(date).getFullYear();
    dm = new Date(date).getMonth() + 1; 
    dd = new Date(date).getDate();
    return dd + "/" + dm + "/" + dy;
}

------------------------------------------------------------------------------------------
FUNCTION:- To Get Date in MM/DD/YYYY Format
INPUT:-       3/21/2013 2:30:00 PM
OUTPUT:-    3/21/2013
------------------------------------------------------------------------------------------
function getMMDDYYYY(date) {
    dy = new Date(date).getFullYear();
    dm = new Date(date).getMonth() + 1;
    dd = new Date(date).getDate();
    return dm + "/" + dd + "/" + dy;
}

------------------------------------------------------------------------------------------
FUNCTION:- To get Only Time Parts from Date
INPUT:-       3/21/2013 2:30:00 PM
OUTPUT:-    02:30 PM
------------------------------------------------------------------------------------------
function getHoursMins(date) {
    dh = new Date(date).getHours();
    dmin = new Date(date).getMinutes();
    dmeridiem = "AM";
    dhrs = dh;
    if (dhrs >= 12) {
        // dhrs = dh - 12;
        dhrs = dh % 12 || 12;
        dmeridiem = "PM";
    }
    dhrs = dhrs < 10 ? "0" + dhrs : dhrs;          // for 2 digit Format Hours
    dmin = dmin < 10 ? "0" + dmin : dmin;          // for 2 digit Format Minutes
    return dhrs + ":" + dmin + " " + dmeridiem;
}

------------------------------------------------------------------------------------------
FUNCTION:- To get Mins Between Time Ranges
INPUT:-       "02:00 PM","03:00 PM"
OUTPUT:-    60
------------------------------------------------------------------------------------------
function timeDiffInMins(startTime, endTime) {
    var mins = parseTime(endTime) - parseTime(startTime);
    return mins;
}

------------------------------------------------------------------------------------------
FUNCTION:- To get No. Of Interval-Slots Between Time Ranges
INPUT:-       "02:00 PM","03:00 PM",30 (for eg.30 mins Interval)
OUTPUT:-    2
------------------------------------------------------------------------------------------
function calculateTotalSlots(startTime, endTime,interval) { 
    var slots = timeDiffInMins(startTime, endTime) / interval;
    return slots;
}

------------------------------------------------------------------------------------------
FUNCTION:- Act as Time-Parser (Analyse the given string &
                        Convert it into a semantic time)
INPUT:-       "02:30 PM"
OUTPUT:-    870
------------------------------------------------------------------------------------------
function parseTime(time) {
    var c = time.split(':');
    var m = c[1].indexOf("PM");           
    c[0] = parseInt(c[0] * 1) == 12 ? c[0] = 0 : c[0];  // if its 12 make it zero to get correct minutes
    if (m != -1)
        c[0] = parseInt(c[0] * 1) + 12;  // if Meridiem is PM then add 12
    return parseInt(c[0] * 60) + parseInt(c[1]);
}

------------------------------------------------------------------------------------------
// Validate if Birthdate is FutureDate using jQuery/javascript
------------------------------------------------------------------------------------------

function IsFutureDate(txtElem) {
    var ldtDate = $(txtElem).val().trim();
    var ldtCurrentDate = new Date();
    if (ldtDate != "__/__/____" && ldtDate != "") {
        ldtDate = Date.parse(ldtDate);
        if (ldtDate > ldtCurrentDate) {
            return false;
        }
    }
    return true;
}

------------------------------------------------------------------------------------------
// Check Valid Date Range (Validate Range only if Dates are provided
// i.e. Dates are not mandatory fields)
------------------------------------------------------------------------------------------

function CheckValidDateRange(elemStartVal, elemEndVal) {
    if ((elemStartVal != "__/__/____" && elemStartVal != "") || (elemEndVal != "__/__/____" && elemEndVal != "")) {
        if (IsValidDate(elemStartVal) == true && IsValidDate(elemEndVal) == true) {
            var $start = new Date(elemStartVal);
            var $end = new Date(elemEndVal);
            if ($start > $end) return false;        // Return false if startdate > enddate
        }
        else {
            return false;       // Return false if any of dates are not valid
        }
    }
    return true;    // Default true
}


------------------------------------------------------------------------------------------
// Check Valid Date Range (Dates are Mandatory i.e also check for empty dates)
------------------------------------------------------------------------------------------

function CheckRequiredValidDateRange(elemStartVal, elemEndVal) {
    if ((elemStartVal != "__/__/____" && elemStartVal != "") && (elemEndVal != "__/__/____" && elemEndVal != "")) {
        if (IsValidDate(elemStartVal) == true && IsValidDate(elemEndVal) == true) {
            var $start = new Date(elemStartVal);
            var $end = new Date(elemEndVal);
            if ($start > $end)
                return false;    // Return false if startdate > enddate
            else
                return true;         
        }
        else {
            return false;    // Return false if any of dates are not valid       
        }
    }
    return false;    // Default false
}


------------------------------------------------------------------------------------------
// Validate Date using Javascript and Regex
// will check for leap years too.
------------------------------------------------------------------------------------------

function IsValidDate(elemVal) {
    var lsRegex = new RegExp(/^((((((0[13578])|(1[02]))[\s\.\-\/\\]?((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|(11))[\s\.\-\/\\]?((0[1-9])|([12][0-9])|(30)))|((02)[\s\.\-\/\\]?((0[1-9])|(1[0-9])|(2[0-8]))))[\s\.\-\/\\]?(((([2468][^048])|([13579][^26]))00)|(\d\d\d[13579])|(\d\d[02468][^048])|(\d\d[13579][^26])))|(((((0[13578])|(1[02]))[\s\.\-\/\\]?((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|(11))[\s\.\-\/\\]?((0[1-9])|([12][0-9])|(30)))|((02)[\s\.\-\/\\]?((0[1-9])|([12][0-9]))))[\s\.\-\/\\]?(((([2468][048])|([13579][26]))00)|(\d\d[2468][048])|(\d\d[13579][26])|(\d\d0[48]))))$/);
    var ldtDate = elemVal;
    if (ldtDate != "__/__/____") {
    var ldtDateYear = ldtDate.split("/")[2].split(" ")[0]; // To separate time and get only year
        if ((!lsRegex.test(ldtDate)) || (parseInt(ldtDateYear) < 1900)) {
            return false;
        }
    }
    else {
        return false;
    }
    return true;
}


------[END]----------------------------------------------------------------------------

Comments are closed