Created
October 29, 2012 16:53
-
-
Save kim3er/3974853 to your computer and use it in GitHub Desktop.
Date Format with IE fix.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Date Format 1.2.3 | |
* (c) 2007-2009 Steven Levithan <stevenlevithan.com> | |
* MIT license | |
* | |
* Includes enhancements by Scott Trenda <scott.trenda.net> | |
* and Kris Kowal <cixar.com/~kris.kowal/> | |
* | |
* Accepts a date, a mask, or a date and a mask. | |
* Returns a formatted version of the given date. | |
* The date defaults to the current date/time. | |
* The mask defaults to dateFormat.masks.default. | |
*/ | |
var dateFormat = function () { | |
var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, | |
timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, | |
timezoneClip = /[^-+\dA-Z]/g, | |
pad = function (val, len) { | |
val = String(val); | |
len = len || 2; | |
while (val.length < len) val = "0" + val; | |
return val; | |
}; | |
// Regexes and supporting functions are cached through closure | |
return function (date, mask, utc) { | |
var dF = dateFormat; | |
// You can't provide utc if you skip other args (use the "UTC:" mask prefix) | |
if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { | |
mask = date; | |
date = undefined; | |
} | |
// Passing date through Date applies Date.parse, if necessary | |
if (date && typeof(date) === "string") { | |
var myDateArray = date.split("-"); | |
date = new Date(myDateArray[0], myDateArray[1]-1, myDateArray[2]); | |
} | |
else { | |
date = date ? new Date(date) : new Date; | |
} | |
if (isNaN(date)) throw SyntaxError("invalid date"); | |
mask = String(dF.masks[mask] || mask || dF.masks["default"]); | |
// Allow setting the utc argument via the mask | |
if (mask.slice(0, 4) == "UTC:") { | |
mask = mask.slice(4); | |
utc = true; | |
} | |
var _ = utc ? "getUTC" : "get", | |
d = date[_ + "Date"](), | |
D = date[_ + "Day"](), | |
m = date[_ + "Month"](), | |
y = date[_ + "FullYear"](), | |
H = date[_ + "Hours"](), | |
M = date[_ + "Minutes"](), | |
s = date[_ + "Seconds"](), | |
L = date[_ + "Milliseconds"](), | |
o = utc ? 0 : date.getTimezoneOffset(), | |
flags = { | |
d: d, | |
dd: pad(d), | |
ddd: dF.i18n.dayNames[D], | |
dddd: dF.i18n.dayNames[D + 7], | |
m: m + 1, | |
mm: pad(m + 1), | |
mmm: dF.i18n.monthNames[m], | |
mmmm: dF.i18n.monthNames[m + 12], | |
yy: String(y).slice(2), | |
yyyy: y, | |
h: H % 12 || 12, | |
hh: pad(H % 12 || 12), | |
H: H, | |
HH: pad(H), | |
M: M, | |
MM: pad(M), | |
s: s, | |
ss: pad(s), | |
l: pad(L, 3), | |
L: pad(L > 99 ? Math.round(L / 10) : L), | |
t: H < 12 ? "a" : "p", | |
tt: H < 12 ? "am" : "pm", | |
T: H < 12 ? "A" : "P", | |
TT: H < 12 ? "AM" : "PM", | |
Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), | |
o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), | |
S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] | |
}; | |
return mask.replace(token, function ($0) { | |
return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); | |
}); | |
}; | |
}(); | |
// Some common format strings | |
dateFormat.masks = { | |
"default": "ddd mmm dd yyyy HH:MM:ss", | |
shortDate: "m/d/yy", | |
mediumDate: "mmm d, yyyy", | |
longDate: "mmmm d, yyyy", | |
fullDate: "dddd, mmmm d, yyyy", | |
shortTime: "h:MM TT", | |
mediumTime: "h:MM:ss TT", | |
longTime: "h:MM:ss TT Z", | |
isoDate: "yyyy-mm-dd", | |
isoTime: "HH:MM:ss", | |
isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", | |
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" | |
}; | |
// Internationalization strings | |
dateFormat.i18n = { | |
dayNames: [ | |
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", | |
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" | |
], | |
monthNames: [ | |
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", | |
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" | |
] | |
}; | |
// For convenience... | |
Date.prototype.format = function (mask, utc) { | |
return dateFormat(this, mask, utc); | |
}; |
Is this really an IE fix? It breaks in IE8 if "date" is a valid date as the first argument, because it will return false for the check for string if (date && typeof(date) === "string")
and then go into date = date ? new Date(date) : new Date;
. new Date(date)
will always return NaN
in IE8. So then if (isNaN(date)) throw SyntaxError("invalid date");
will always throw a SyntaxError.
var tabledatestart= (aData[iStartDateCol]).replace(/-/g, '/');
var tabledatestart = (new Date(tabledatestart)).format("mm/dd/yyyy");
Kindly any one help... it works all browser but IE it throws
if (isNaN(date)) throw SyntaxError("invalid date"); will always throw a SyntaxError.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thank u for this code! Its helps me