Skip to content

Instantly share code, notes, and snippets.

@Albert-IV
Created November 14, 2013 18:30
Show Gist options
  • Save Albert-IV/7471901 to your computer and use it in GitHub Desktop.
Save Albert-IV/7471901 to your computer and use it in GitHub Desktop.
!function() {
var DATE_EXT = {};
var extendMe;
DATE_EXT.getLabel = (function() {
return function() {
if( isNaN( this.getTime() ) ) return NaN;
return (this.getMonth() + 1) + '/' + this.getDate() + '/' + this.getFullYear().toString().substr(2,2);
};
})();
DATE_EXT.getDelta = (function() {
return function(deltaDate) {
if( typeof deltaDate == "string" ) deltaDate = new Date(deltaDate);
if( !this.isDate() || !deltaDate.isDate() ) return false;
// Get # of milliseconds between dates
var delta = this.getTime() > deltaDate.getTime() ?
this.getTime() - deltaDate.getTime() :
deltaDate.getTime() - this.getTime();
// Set up some helper methods
var toSecond = function(d) { return Math.floor( d / 1000 ); }
, secondToMilli = function(d) { return d * 1000; }
, toMinute = function(d) { return Math.floor( d / 1000 / 60 ); }
, minuteToMilli = function(d) { return d * 1000 * 60; }
, toHour = function(d) { return Math.floor( d / 1000 / 60 / 60 ); }
, hourToMilli = function(d) { return d * 1000 * 60 * 60; }
, toDay = function(d) { return Math.floor( d / 1000 / 60 / 60 / 24 ); }
, dayToMilli = function(d) { return d * 1000 * 60 * 60 * 24; };
// Calculate Days and remove from total delta
var dayDelta = toDay( delta );
delta -= dayToMilli( dayDelta );
// Calculate hours, remove from total again
var hourDelta = toHour( delta );
delta -= hourToMilli( hourDelta );
// Calculate minutes
var minuteDelta = toMinute( delta );
delta -= minuteToMilli( minuteDelta );
// And seconds
var secondDelta = toSecond( delta );
delta -= secondToMilli( secondDelta );
// Leftover delta === millisecond time delta
// Return that shit!
return {
"days" : dayDelta,
"hours" : hourDelta,
"minutes" : minuteDelta,
"seconds" : secondDelta,
"milliseconds" : delta
};
};
})();
if (Object.defineProperty) {
extendMe = function(nativeObj, extensions) {
for (var extension in extensions) {
Object.defineProperty( nativeObj.prototype, extension, {
configurable : true,
writable : true,
enumerable : false,
value : extensions[extension]
});
}
};
} else {
extendMe = function(nativeObj, extensions) {
for (var extension in extensions) {
obj.prototype[extension] = extensions[extension];
}
};
}
extendMe(Date, DATE_EXT);
}();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment