📄 date.js
字号:
s:"(\\d{1,2})"}; // 12/24-hr format format of an hour without leading zeroes case "h": case "H": return {g:1, c:"h = parseInt(results[" + currentGroup + "], 10);\n", s:"(\\d{2})"}; // 12/24-hr format format of an hour with leading zeroes case "i": return {g:1, c:"i = parseInt(results[" + currentGroup + "], 10);\n", s:"(\\d{2})"}; case "s": return {g:1, c:"s = parseInt(results[" + currentGroup + "], 10);\n", s:"(\\d{2})"}; case "u": return {g:1, c:"ms = parseInt(results[" + currentGroup + "], 10);\n", s:"(\\d{3})"}; case "O": return {g:1, c:[ "o = results[", currentGroup, "];\n", "var sn = o.substring(0,1);\n", // get + / - sign "var hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60);\n", // get hours (performs minutes-to-hour conversion also) "var mn = o.substring(3,5) % 60;\n", // get minutes "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n", // -12hrs <= GMT offset <= 14hrs " (sn + String.leftPad(hr, 2, 0) + String.leftPad(mn, 2, 0)) : null;\n" ].join(""), s:"([+\-]\\d{4})"}; case "T": return {g:0, c:null, s:"[A-Z]{1,4}"}; // timezone abbrev. may be between 1 - 4 chars case "Z": return {g:1, c:"z = results[" + currentGroup + "] * 1;\n" // -43200 <= UTC offset <= 50400 + "z = (-43200 <= z && z <= 50400)? z : null;\n", s:"([+\-]?\\d{1,5})"}; // leading '+' sign is optional for UTC offset default: return {g:0, c:null, s:String.escape(character)}; }};/** * Get the timezone abbreviation of the current date (equivalent to the format specifier 'T'). * @return {String} The abbreviated timezone name (e.g. 'CST') */Date.prototype.getTimezone = function() { return this.toString().replace(/^.*? ([A-Z]{1,4})[\-+][0-9]{4} .*$/, "$1");};/** * Get the offset from GMT of the current date (equivalent to the format specifier 'O'). * @return {String} The 4-character offset string prefixed with + or - (e.g. '-0600') */Date.prototype.getGMTOffset = function() { return (this.getTimezoneOffset() > 0 ? "-" : "+") + String.leftPad(Math.abs(Math.floor(this.getTimezoneOffset() / 60)), 2, "0") + String.leftPad(this.getTimezoneOffset() % 60, 2, "0");};/** * Get the numeric day number of the year, adjusted for leap year. * @return {Number} 0 to 364 (365 in leap years) */Date.prototype.getDayOfYear = function() { var num = 0; Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28; for (var i = 0; i < this.getMonth(); ++i) { num += Date.daysInMonth[i]; } return num + this.getDate() - 1;};/** * Get the numeric ISO-8601 week number of the year * (equivalent to the format specifier 'W'). * @return {Number} 1 to 53 */Date.prototype.getWeekOfYear = function() { /* original getWeek() function developed by Nick Baicoianu at MeanFreePath: http://www.meanfreepath.com */ var jan1 = new Date(this.getFullYear(), 0, 1); var day = jan1.getDay() - 1; // the day of week the year begins on day = (day >= 0 ? day : day + 7); var daynum = Math.floor((this.getTime() - jan1.getTime() - (this.getTimezoneOffset()-jan1.getTimezoneOffset())*60000)/86400000) + 1; var weeknum; // if the year starts before the middle of a week if (day < 4) { weeknum = Math.floor((daynum + day - 1) / 7) + 1; if (weeknum > 52) { jan1 = new Date(this.getFullYear() + 1, 0, 1); day = jan1.getDay() - 1; day = (day >= 0 ? day : day + 7); // if the next year starts before the middle of the week, it is week #1 of that year weeknum = day < 4 ? 1 : 53; } } else { weeknum = Math.floor((daynum + day - 1) / 7) || 52; } return weeknum;};/** * Whether or not the current date is in a leap year. * @return {Boolean} True if the current date is in a leap year, else false */Date.prototype.isLeapYear = function() { var year = this.getFullYear(); return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));};/** * Get the first day of the current month, adjusted for leap year. The returned value * is the numeric day index within the week (0-6) which can be used in conjunction with * the {@link #monthNames} array to retrieve the textual day name. * Example: *<pre><code>var dt = new Date('1/10/2007');document.write(Date.dayNames[dt.getFirstDayOfMonth()]); //output: 'Monday'</code></pre> * @return {Number} The day number (0-6) */Date.prototype.getFirstDayOfMonth = function() { var day = (this.getDay() - (this.getDate() - 1)) % 7; return (day < 0) ? (day + 7) : day;};/** * Get the last day of the current month, adjusted for leap year. The returned value * is the numeric day index within the week (0-6) which can be used in conjunction with * the {@link #monthNames} array to retrieve the textual day name. * Example: *<pre><code>var dt = new Date('1/10/2007');document.write(Date.dayNames[dt.getLastDayOfMonth()]); //output: 'Wednesday'</code></pre> * @return {Number} The day number (0-6) */Date.prototype.getLastDayOfMonth = function() { var day = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7; return (day < 0) ? (day + 7) : day;};/** * Get the date of the first day of the month in which this date resides * @return {Date} */Date.prototype.getFirstDateOfMonth = function() { return new Date(this.getFullYear(), this.getMonth(), 1);};/** * Get the date of the last day of the month in which this date resides * @return {Date} */Date.prototype.getLastDateOfMonth = function() { return new Date(this.getFullYear(), this.getMonth(), this.getDaysInMonth());};/** * Get the number of days in the current month, adjusted for leap year. * @return {Number} The number of days in the month */Date.prototype.getDaysInMonth = function() { Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28; return Date.daysInMonth[this.getMonth()];};/** * Get the English ordinal suffix of the current day (equivalent to the format specifier 'S'). * @return {String} 'st, 'nd', 'rd' or 'th' */Date.prototype.getSuffix = function() { switch (this.getDate()) { case 1: case 21: case 31: return "st"; case 2: case 22: return "nd"; case 3: case 23: return "rd"; default: return "th"; }};// privateDate.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];/** * An array of textual month names. * Override these values for international dates, for example... * Date.monthNames = ['JanInYourLang', 'FebInYourLang', ...]; * @type Array * @static */Date.monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];/** * An array of textual day names. * Override these values for international dates, for example... * Date.dayNames = ['SundayInYourLang', 'MondayInYourLang', ...]; * @type Array * @static */Date.dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];// privateDate.y2kYear = 50;// privateDate.monthNumbers = { Jan:0, Feb:1, Mar:2, Apr:3, May:4, Jun:5, Jul:6, Aug:7, Sep:8, Oct:9, Nov:10, Dec:11};/** * Creates and returns a new Date instance with the exact same date value as the called instance. * Dates are copied and passed by reference, so if a copied date variable is modified later, the original * variable will also be changed. When the intention is to create a new variable that will not * modify the original instance, you should create a clone. * * Example of correctly cloning a date: * <pre><code>//wrong way:var orig = new Date('10/1/2006');var copy = orig;copy.setDate(5);document.write(orig); //returns 'Thu Oct 05 2006'!//correct way:var orig = new Date('10/1/2006');var copy = orig.clone();copy.setDate(5);document.write(orig); //returns 'Thu Oct 01 2006'</code></pre> * @return {Date} The new Date instance */Date.prototype.clone = function() { return new Date(this.getTime());};/** * Clears any time information from this date @param {Boolean} clone true to create a clone of this date, clear the time and return it @return {Date} this or the clone */Date.prototype.clearTime = function(clone){ if(clone){ return this.clone().clearTime(); } this.setHours(0); this.setMinutes(0); this.setSeconds(0); this.setMilliseconds(0); return this;};// private// safari setMonth is brokenif(Ext.isSafari){ Date.brokenSetMonth = Date.prototype.setMonth; Date.prototype.setMonth = function(num){ if(num <= -1){ var n = Math.ceil(-num); var back_year = Math.ceil(n/12); var month = (n % 12) ? 12 - n % 12 : 0 ; this.setFullYear(this.getFullYear() - back_year); return Date.brokenSetMonth.call(this, month); } else { return Date.brokenSetMonth.apply(this, arguments); } };}/** Date interval constant @static @type String */Date.MILLI = "ms";/** Date interval constant @static @type String */Date.SECOND = "s";/** Date interval constant @static @type String */Date.MINUTE = "mi";/** Date interval constant @static @type String */Date.HOUR = "h";/** Date interval constant @static @type String */Date.DAY = "d";/** Date interval constant @static @type String */Date.MONTH = "mo";/** Date interval constant @static @type String */Date.YEAR = "y";/** * Provides a convenient method of performing basic date arithmetic. This method * does not modify the Date instance being called - it creates and returns * a new Date instance containing the resulting date value. * * Examples: * <pre><code>//Basic usage:var dt = new Date('10/29/2006').add(Date.DAY, 5);document.write(dt); //returns 'Fri Oct 06 2006 00:00:00'//Negative values will subtract correctly:var dt2 = new Date('10/1/2006').add(Date.DAY, -5);document.write(dt2); //returns 'Tue Sep 26 2006 00:00:00'//You can even chain several calls together in one line!var dt3 = new Date('10/1/2006').add(Date.DAY, 5).add(Date.HOUR, 8).add(Date.MINUTE, -30);document.write(dt3); //returns 'Fri Oct 06 2006 07:30:00' </code></pre> * * @param {String} interval A valid date interval enum value * @param {Number} value The amount to add to the current date * @return {Date} The new Date instance */Date.prototype.add = function(interval, value){ var d = this.clone(); if (!interval || value === 0) return d; switch(interval.toLowerCase()){ case Date.MILLI: d.setMilliseconds(this.getMilliseconds() + value); break; case Date.SECOND: d.setSeconds(this.getSeconds() + value); break; case Date.MINUTE: d.setMinutes(this.getMinutes() + value); break; case Date.HOUR: d.setHours(this.getHours() + value); break; case Date.DAY: d.setDate(this.getDate() + value); break; case Date.MONTH: var day = this.getDate(); if(day > 28){ day = Math.min(day, this.getFirstDateOfMonth().add('mo', value).getLastDateOfMonth().getDate()); } d.setDate(day); d.setMonth(this.getMonth() + value); break; case Date.YEAR: d.setFullYear(this.getFullYear() + value); break; } return d;};/** * Checks if this date falls on or between the given start and end dates * @param {Date} start Start date * @param {Date} end End date * @return {Boolean} true if this date falls on or between the given start and end dates */Date.prototype.between = function(start, end){ var t = this.getTime(); return start.getTime() <= t && t <= end.getTime();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -