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