vbGeneralDate = 0; vbLongDate = 1; vbShortDate = 2; vbLongTime = 3; vbShortTime = 4; vbUseSystemDayOfWeek = 0; vbSunday = 1; vbMonday = 2; vbTuesday = 3; vbWednesday = 4; vbThursday = 5; vbFriday = 6; vbSaturday = 7; vbUseSystem = 0; vbFirstJan1 = 1; vbFirstFourDays = 2; vbFirstFullWeek = 3; Date.MonthNames = [null, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; Date.WeekdayNames = [null, "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; Date.IsDate = function(A) { return !isNaN(new Date(A)); }; Date.CDate = function(E) { if (Date.IsDate(E)) { return new Date(E); } var B = E.replace(/\-/g, "/").replace(/\./g, "/").replace(/ /g, "/"); B = B.replace(/pm$/i, " pm").replace(/am$/i, " am"); if (Date.IsDate(B)) { return new Date(B); } var A = B + "/" + new Date().getFullYear(); if (Date.IsDate(A)) { return new Date(A); } if (B.indexOf(":")) { var D = B.replace(/ /, "/" + new Date().getFullYear() + " "); if (Date.IsDate(D)) { return new Date(D); } var C = new Date().toDateString() + " " + E; if (Date.IsDate(C)) { return new Date(C); } } return false; }; Date.DateAdd = function(C, A, D) { if (!Date.CDate(D)) { return "invalid date: '" + D + "'"; } if (isNaN(A)) { return "invalid number: '" + A + "'"; } A = new Number(A); var B = Date.CDate(D); switch (C.toLowerCase()) { case "yyyy": B.setFullYear(B.getFullYear() + A); break; case "q": B.setMonth(B.getMonth() + (A * 3)); break; case "m": B.setMonth(B.getMonth() + A); break; case "y": case "d": case "w": B.setDate(B.getDate() + A); break; case "ww": B.setDate(B.getDate() + (A * 7)); break; case "h": B.setHours(B.getHours() + A); break; case "n": B.setMinutes(B.getMinutes() + A); break; case "s": B.setSeconds(B.getSeconds() + A); break; case "ms": B.setMilliseconds(B.getMilliseconds() + A); break; default: return "invalid interval: '" + C + "'"; } return B; }; Date.DateDiff = function(S, E, C, R) { if (!Date.CDate(E)) { return "invalid date: '" + E + "'"; } if (!Date.CDate(C)) { return "invalid date: '" + C + "'"; } R = (isNaN(R) || R == 0) ? vbSunday : parseInt(R); var Q = Date.CDate(E); var P = Date.CDate(C); if ("h,n,s,ms".indexOf(S.toLowerCase()) == -1) { if (E.toString().indexOf(":") == -1) { Q.setUTCHours(0, 0, 0, 0); } if (C.toString().indexOf(":") == -1) { P.setUTCHours(0, 0, 0, 0); } } var N = P.valueOf() - Q.valueOf(); var L = new Date(N); var H = P.getUTCFullYear() - Q.getUTCFullYear(); var M = P.getUTCMonth() - Q.getUTCMonth() + (H != 0 ? H * 12 : 0); var J = parseInt(M / 3); var B = N; var I = parseInt(N / 1000); var O = parseInt(I / 60); var K = parseInt(O / 60); var G = parseInt(K / 24); var A = parseInt(G / 7); if (S.toLowerCase() == "ww") { var D = Date.DatePart("w", Q, R) - 1; if (D) { Q.setDate(Q.getDate() + 7 - D); } var D = Date.DatePart("w", P, R) - 1; if (D) { P.setDate(P.getDate() - D); } var F = Date.DateDiff("w", Q, P) + 1; } switch (S.toLowerCase()) { case "yyyy": return H; case "q": return J; case "m": return M; case "y": case "d": return G; case "w": return A; case "ww": return F; case "h": return K; case "n": return O; case "s": return I; case "ms": return B; default: return "invalid interval: '" + S + "'"; } }; Date.DatePart = function(C, D, B) { if (!Date.CDate(D)) { return "invalid date: '" + D + "'"; } var A = Date.CDate(D); switch (C.toLowerCase()) { case "yyyy": return A.getFullYear(); case "q": return parseInt(A.getMonth() / 3) + 1; case "m": return A.getMonth() + 1; case "y": return Date.DateDiff("y", "1/1/" + A.getFullYear(), A) + 1; case "d": return A.getDate(); case "w": return Date.Weekday(A.getDay() + 1, B); case "ww": return Date.DateDiff("ww", "1/1/" + A.getFullYear(), A, B) + 1; case "h": return A.getHours(); case "n": return A.getMinutes(); case "s": return A.getSeconds(); case "ms": return A.getMilliseconds(); default: return "invalid interval: '" + C + "'"; } }; Date.MonthName = function(B, A) { if (isNaN(B)) { if (!Date.CDate(B)) { return "invalid month: '" + B + "'"; } B = DatePart("m", Date.CDate(B)); } var C = Date.MonthNames[B]; if (A == true) { C = C.substring(0, 3); } return C; }; Date.WeekdayName = function(A, D, B) { if (isNaN(A)) { if (!Date.CDate(A)) { return "invalid weekday: '" + A + "'"; } A = DatePart("w", Date.CDate(A)); } B = (isNaN(B) || B == 0) ? vbSunday : parseInt(B); var C = ((B - 1 + parseInt(A) - 1 + 7) % 7) + 1; var E = Date.WeekdayNames[C]; if (D == true) { E = E.substring(0, 3); } return E; }; Date.Weekday = function(A, B) { B = (isNaN(B) || B == 0) ? vbSunday : parseInt(B); return ((parseInt(A) - B + 7) % 7) + 1; }; Date.FormatDateTime = function(C, B) { if (C.toUpperCase().substring(0, 3) == "NOW") { C = new Date(); } if (!Date.CDate(C)) { return "invalid date: '" + C + "'"; } if (isNaN(B)) { B = vbGeneralDate; } var A = Date.CDate(C); switch (parseInt(B)) { case vbGeneralDate: return A.toString(); case vbLongDate: return Format(C, "DDDD, MMMM D, YYYY"); case vbShortDate: return Format(C, "MM/DD/YYYY"); case vbLongTime: return A.toLocaleTimeString(); case vbShortTime: return Format(C, "HH:MM:SS"); default: return "invalid NamedFormat: '" + B + "'"; } }; Date.Format = function(H, G, F, E) { if (!Date.CDate(H)) { return "invalid date: '" + H + "'"; } if (!G || G == "") { return B.toString(); } var B = Date.CDate(H); this.pad = function(L) { if (L.toString().length == 1) { L = "0" + L; } return L; }; var I = B.getHours() >= 12 ? "PM" : "AM"; var J = B.getHours(); if (J == 0) { J = 12; } if (J > 12) { J -= 12; } var D = J + ":" + this.pad(B.getMinutes()) + ":" + this.pad(B.getSeconds()) + " " + I; var C = (B.getMonth() + 1) + "/" + B.getDate() + "/" + new String(B.getFullYear()).substring(2, 4); var K = Date.MonthName(B.getMonth() + 1) + " " + B.getDate() + ", " + B.getFullYear(); var A = G; A = A.replace(new RegExp("C", "gi"), "CCCC"); A = A.replace(new RegExp("mmmm", "gi"), "XXXX"); A = A.replace(new RegExp("mmm", "gi"), "XXX"); A = A.replace(new RegExp("dddddd", "gi"), "AAAAAA"); A = A.replace(new RegExp("ddddd", "gi"), "AAAAA"); A = A.replace(new RegExp("dddd", "gi"), "AAAA"); A = A.replace(new RegExp("ddd", "gi"), "AAA"); A = A.replace(new RegExp("timezone", "gi"), "ZZZZ"); A = A.replace(new RegExp("time24", "gi"), "TTTT"); A = A.replace(new RegExp("time", "gi"), "TTT"); A = A.replace(new RegExp("yyyy", "gi"), B.getFullYear()); A = A.replace(new RegExp("yy", "gi"), new String(B.getFullYear()).substring(2, 4)); A = A.replace(new RegExp("y", "gi"), Date.DatePart("y", B)); A = A.replace(new RegExp("q", "gi"), Date.DatePart("q", B)); A = A.replace(new RegExp("mm", "gi"), (B.getMonth() + 1)); A = A.replace(new RegExp("m", "gi"), (B.getMonth() + 1)); A = A.replace(new RegExp("dd", "gi"), this.pad(B.getDate())); A = A.replace(new RegExp("d", "gi"), B.getDate()); A = A.replace(new RegExp("hh", "gi"), this.pad(B.getHours())); A = A.replace(new RegExp("h", "gi"), B.getHours()); A = A.replace(new RegExp("nn", "gi"), this.pad(B.getMinutes())); A = A.replace(new RegExp("n", "gi"), B.getMinutes()); A = A.replace(new RegExp("ss", "gi"), this.pad(B.getSeconds())); A = A.replace(new RegExp("s", "gi"), B.getSeconds()); A = A.replace(new RegExp("t t t t t", "gi"), D); A = A.replace(new RegExp("am/pm", "g"), B.getHours() >= 12 ? "pm" : "am"); A = A.replace(new RegExp("AM/PM", "g"), B.getHours() >= 12 ? "PM" : "AM"); A = A.replace(new RegExp("a/p", "g"), B.getHours() >= 12 ? "p" : "a"); A = A.replace(new RegExp("A/P", "g"), B.getHours() >= 12 ? "P" : "A"); A = A.replace(new RegExp("AMPM", "g"), B.getHours() >= 12 ? "pm" : "am"); A = A.replace(new RegExp("XXXX", "gi"), Date.MonthName(B.getMonth() + 1, false)); A = A.replace(new RegExp("XXX", "gi"), Date.MonthName(B.getMonth() + 1, true)); A = A.replace(new RegExp("AAAAAA", "gi"), K); A = A.replace(new RegExp("AAAAA", "gi"), C); A = A.replace(new RegExp("AAAA", "gi"), Date.WeekdayName(B.getDay() + 1, false, F)); A = A.replace(new RegExp("AAA", "gi"), Date.WeekdayName(B.getDay() + 1, true, F)); A = A.replace(new RegExp("TTTT", "gi"), B.getHours() + ":" + this.pad(B.getMinutes())); A = A.replace(new RegExp("TTT", "gi"), J + ":" + this.pad(B.getMinutes()) + " " + I); A = A.replace(new RegExp("CCCC", "gi"), C + " " + D); tz = B.getTimezoneOffset(); timezone = (tz < 0) ? ("GMT-" + tz / 60) : (tz == 0) ? ("GMT") : ("GMT+" + tz / 60); A = A.replace(new RegExp("ZZZZ", "gi"), timezone); return A; }; IsDate = Date.IsDate; CDate = Date.CDate; DateAdd = Date.DateAdd; DateDiff = Date.DateDiff; DatePart = Date.DatePart; MonthName = Date.MonthName; WeekdayName = Date.WeekdayName; Weekday = Date.Weekday; FormatDateTime = Date.FormatDateTime; Format = Date.Format;
