📄 date.js
字号:
</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"];/** * Get the short month name for the given month number. * Override this function for international dates. * @param {Number} month A zero-based javascript month number. * @return {String} The short month name. * @static */Date.getShortMonthName = function(month) { return Date.monthNames[month].substring(0, 3);}/** * 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"];/** * Get the short day name for the given day number. * Override this function for international dates. * @param {Number} day A zero-based javascript day number. * @return {String} The short day name. * @static */Date.getShortDayName = function(day) { return Date.dayNames[day].substring(0, 3);}// privateDate.y2kYear = 50;/** * An object hash of zero-based javascript month numbers (with short month names as keys. note: keys are case-sensitive). * Override these values for international dates, for example... * Date.monthNumbers = {'ShortJanNameInYourLang':0, 'ShortFebNameInYourLang':1, ...}; * @type Object * @static */Date.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};/** * Get the zero-based javascript month number for the given short/full month name. * Override this function for international dates. * @param {String} name The short/full month name. * @return {Number} The zero-based javascript month number. * @static */Date.getMonthNumber = function(name) { // handle camel casing for english month names (since the keys for the Date.monthNumbers hash are case sensitive) return Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];}/** * 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 (defaults to false). @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 + -