⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 date.js

📁 ext-2.3.0
💻 JS
📖 第 1 页 / 共 4 页
字号:
    /**     * An array of textual month names.     * Override these values for international dates.     * Example:     * <pre><code>Date.monthNames = [    'JanInYourLang',    'FebInYourLang',    ...];</code></pre>     * @type Array     * @static     */    monthNames : [        "January",        "February",        "March",        "April",        "May",        "June",        "July",        "August",        "September",        "October",        "November",        "December"    ],    /**     * 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.     * Example:     * <pre><code>Date.monthNumbers = {    'ShortJanNameInYourLang':0,    'ShortFebNameInYourLang':1,    ...};</code></pre>     * @type Object     * @static     */    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 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     */    getShortMonthName : function(month) {        return Date.monthNames[month].substring(0, 3);    },    /**     * 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     */    getShortDayName : function(day) {        return Date.dayNames[day].substring(0, 3);    },    /**     * 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     */    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()];    },    /**     * The base format-code to formatting-function hashmap used by the {@link #format} method.     * Formatting functions are strings (or functions which return strings) which     * will return the appropriate value when evaluated in the context of the Date object     * from which the {@link #format} method is called.     * Add to / override these mappings for custom date formatting.     * Note: Date.format() treats characters as literals if an appropriate mapping cannot be found.     * Example:     * <pre><code>Date.formatCodes.x = "String.leftPad(this.getDate(), 2, '0')";(new Date()).format("X"); // returns the current day of the month</code></pre>     * @type Object     * @static     */    formatCodes : {        d: "String.leftPad(this.getDate(), 2, '0')",        D: "Date.getShortDayName(this.getDay())", // get localised short day name        j: "this.getDate()",        l: "Date.dayNames[this.getDay()]",        N: "(this.getDay() ? this.getDay() : 7)",        S: "this.getSuffix()",        w: "this.getDay()",        z: "this.getDayOfYear()",        W: "String.leftPad(this.getWeekOfYear(), 2, '0')",        F: "Date.monthNames[this.getMonth()]",        m: "String.leftPad(this.getMonth() + 1, 2, '0')",        M: "Date.getShortMonthName(this.getMonth())", // get localised short month name        n: "(this.getMonth() + 1)",        t: "this.getDaysInMonth()",        L: "(this.isLeapYear() ? 1 : 0)",        o: "(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))",        Y: "this.getFullYear()",        y: "('' + this.getFullYear()).substring(2, 4)",        a: "(this.getHours() < 12 ? 'am' : 'pm')",        A: "(this.getHours() < 12 ? 'AM' : 'PM')",        g: "((this.getHours() % 12) ? this.getHours() % 12 : 12)",        G: "this.getHours()",        h: "String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",        H: "String.leftPad(this.getHours(), 2, '0')",        i: "String.leftPad(this.getMinutes(), 2, '0')",        s: "String.leftPad(this.getSeconds(), 2, '0')",        u: "String.leftPad(this.getMilliseconds(), 3, '0')",        O: "this.getGMTOffset()",        P: "this.getGMTOffset(true)",        T: "this.getTimezone()",        Z: "(this.getTimezoneOffset() * -60)",        c: function() { // ISO-8601 -- GMT format            for (var c = "Y-m-dTH:i:sP", code = [], i = 0, l = c.length; i < l; ++i) {                var e = c.charAt(i);                code.push(e == "T" ? "'T'" : Date.getFormatCode(e)); // treat T as a character literal            }            return code.join(" + ");        },        /*        c: function() { // ISO-8601 -- UTC format            return [              "this.getUTCFullYear()", "'-'",              "String.leftPad(this.getUTCMonth() + 1, 2, '0')", "'-'",              "String.leftPad(this.getUTCDate(), 2, '0')",              "'T'",              "String.leftPad(this.getUTCHours(), 2, '0')", "':'",              "String.leftPad(this.getUTCMinutes(), 2, '0')", "':'",              "String.leftPad(this.getUTCSeconds(), 2, '0')",              "'Z'"            ].join(" + ");        },        */        U: "Math.round(this.getTime() / 1000)"    },    /**     * Checks if the passed Date parameters will cause a javascript Date "rollover".     * @param {Number} year 4-digit year     * @param {Number} month 1-based month-of-year     * @param {Number} day Day of month     * @param {Number} hour (optional) Hour     * @param {Number} minute (optional) Minute     * @param {Number} second (optional) Second     * @param {Number} millisecond (optional) Millisecond     * @return {Boolean} true if the passed parameters do not cause a Date "rollover", false otherwise.     * @static     */    isValid : function(y, m, d, h, i, s, ms) {        // setup defaults        h = h || 0;        i = i || 0;        s = s || 0;        ms = ms || 0;        var dt = new Date(y, m - 1, d, h, i, s, ms);        return y == dt.getFullYear() &&            m == dt.getMonth() + 1 &&            d == dt.getDate() &&            h == dt.getHours() &&            i == dt.getMinutes() &&            s == dt.getSeconds() &&            ms == dt.getMilliseconds();    },    /**     * Parses the passed string using the specified date format.     * Note that this function expects normal calendar dates, meaning that months are 1-based (i.e. 1 = January).     * The {@link #defaults} hash will be used for any date value (i.e. year, month, day, hour, minute, second or millisecond)     * which cannot be found in the passed string. If a corresponding default date value has not been specified in the {@link #defaults} hash,     * the current date's year, month, day or DST-adjusted zero-hour time value will be used instead.     * Keep in mind that the input date string must precisely match the specified format string     * in order for the parse operation to be successful (failed parse operations return a null value).     * <p>Example:</p><pre><code>//dt = Fri May 25 2007 (current date)var dt = new Date();//dt = Thu May 25 2006 (today's month/day in 2006)dt = Date.parseDate("2006", "Y");//dt = Sun Jan 15 2006 (all date parts specified)dt = Date.parseDate("2006-01-15", "Y-m-d");//dt = Sun Jan 15 2006 15:20:01dt = Date.parseDate("2006-01-15 3:20:01 PM", "Y-m-d g:i:s A");// attempt to parse Sun Feb 29 2006 03:20:01 in strict modedt = Date.parseDate("2006-02-29 03:20:01", "Y-m-d H:i:s", true); // returns null</code></pre>     * @param {String} input The raw date string.     * @param {String} format The expected date string format.     * @param {Boolean} strict (optional) True to validate date strings while parsing (i.e. prevents javascript Date "rollover")                        (defaults to false). Invalid date strings will return null when parsed.     * @return {Date} The parsed Date.     * @static     */    parseDate : function(input, format, strict) {        var p = Date.parseFunctions;        if (p[format] == null) {            Date.createParser(format);        }        return p[format](input, strict === undefined ? Date.useStrict : strict);    },    // private    getFormatCode : function(character) {        var f = Date.formatCodes[character];        if (f) {          f = typeof f == 'function'? f() : f;          Date.formatCodes[character] = f; // reassign function result to prevent repeated execution        }        // note: unknown characters are treated as literals        return f || ("'" + String.escape(character) + "'");    },    // private    createFormat : function(format) {        var code = [],            special = false,            ch = '';        for (var i = 0; i < format.length; ++i) {            ch = format.charAt(i);            if (!special && ch == "\\") {                special = true;            } else if (special) {                special = false;                code.push("'" + String.escape(ch) + "'");            } else {                code.push(Date.getFormatCode(ch))            }        }        Date.formatFunctions[format] = new Function("return " + code.join('+'));    },    // private    createParser : function() {        var code = [            "var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,",                "def = Date.defaults,",                "results = String(input).match(Date.parseRegexes[{0}]);", // either null, or an array of matched strings            "if(results){",                "{1}",                "if(u != null){", // i.e. unix time is defined                    "v = new Date(u * 1000);", // give top priority to UNIX time                "}else{",                    // create Date object representing midnight of the current day;                    // this will provide us with our date defaults                    // (note: clearTime() handles Daylight Saving Time automatically)                    "dt = (new Date()).clearTime();",                    // date calculations (note: these calculations create a dependency on Ext.num())                    "y = y >= 0? y : Ext.num(def.y, dt.getFullYear());",                    "m = m >= 0? m : Ext.num(def.m - 1, dt.getMonth());",                    "d = d >= 0? d : Ext.num(def.d, dt.getDate());",                    // time calculations (note: these calculations create a dependency on Ext.num())                    "h  = h || Ext.num(def.h, dt.getHours());",                    "i  = i || Ext.num(def.i, dt.getMinutes());",                    "s  = s || Ext.num(def.s, dt.getSeconds());",                    "ms = ms || Ext.num(def.ms, dt.getMilliseconds());",                    "if(z >= 0 && y >= 0){",                        // both the year and zero-based day of year are defined and >= 0.                        // these 2 values alone provide sufficient info to create a full date object                        // create Date object representing January 1st for the given year                        "v = new Date(y, 0, 1, h, i, s, ms);",                        // then add day of year, checking for Date "rollover" if necessary                        "v = !strict? v : (strict === true && (z <= 364 || (v.isLeapYear() && z <= 365))? v.add(Date.DAY, z) : null);",                    "}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){", // check for Date "rollover"                        "v = null;", // invalid date, so return null                    "}else{",                        // plain old Date object                        "v = new Date(y, m, d, h, i, s, ms);",                    "}",                "}",            "}",            "if(v){",                // favour UTC offset over GMT offset                "if(zz != null){",                    // reset to UTC, then add offset                    "v = v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - zz);",                "}else if(o){",                    // reset to GMT, then add offset                    "v = v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));",                "}",            "}",            "return v;"        ].join('\n');        return function(format) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -