📄 date.js
字号:
/*
* Ext JS Library 2.2
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
/** * @class Date * * The date parsing and format syntax is a subset of * <a href="http://www.php.net/date">PHP's date() function</a>, and the formats that are * supported will provide results equivalent to their PHP versions. * * The following is a list of all currently supported formats: *<pre>Format Description Example returned values------ ----------------------------------------------------------------------- ----------------------- d Day of the month, 2 digits with leading zeros 01 to 31 D A short textual representation of the day of the week Mon to Sun j Day of the month without leading zeros 1 to 31 l A full textual representation of the day of the week Sunday to Saturday N ISO-8601 numeric representation of the day of the week 1 (for Monday) through 7 (for Sunday) S English ordinal suffix for the day of the month, 2 characters st, nd, rd or th. Works well with j w Numeric representation of the day of the week 0 (for Sunday) to 6 (for Saturday) z The day of the year (starting from 0) 0 to 364 (365 in leap years) W ISO-8601 week number of year, weeks starting on Monday 01 to 53 F A full textual representation of a month, such as January or March January to December m Numeric representation of a month, with leading zeros 01 to 12 M A short textual representation of a month Jan to Dec n Numeric representation of a month, without leading zeros 1 to 12 t Number of days in the given month 28 to 31 L Whether it's a leap year 1 if it is a leap year, 0 otherwise. o ISO-8601 year number (identical to (Y), but if the ISO week number (W) Examples: 1998 or 2004 belongs to the previous or next year, that year is used instead) Y A full numeric representation of a year, 4 digits Examples: 1999 or 2003 y A two digit representation of a year Examples: 99 or 03 a Lowercase Ante meridiem and Post meridiem am or pm A Uppercase Ante meridiem and Post meridiem AM or PM g 12-hour format of an hour without leading zeros 1 to 12 G 24-hour format of an hour without leading zeros 0 to 23 h 12-hour format of an hour with leading zeros 01 to 12 H 24-hour format of an hour with leading zeros 00 to 23 i Minutes, with leading zeros 00 to 59 s Seconds, with leading zeros 00 to 59 u Milliseconds, with leading zeroes (arbitrary number of digits allowed) Examples: 001 (i.e. 1ms) or 100 (i.e. 100ms) or 999 (i.e. 999ms) or 999876543210 (i.e. 999.876543210ms) O Difference to Greenwich time (GMT) in hours and minutes Example: +1030 P Difference to Greenwich time (GMT) with colon between hours and minutes Example: -08:00 T Timezone abbreviation of the machine running the code Examples: EST, MDT, PDT ... Z Timezone offset in seconds (negative if west of UTC, positive if east) -43200 to 50400 c ISO 8601 date (note: milliseconds, if present, must be specified with Examples: at least 1 digit. There is no limit to how many digits the millisecond 2007-04-17T15:19:21+08:00 or value may contain. see http://www.w3.org/TR/NOTE-datetime for more info) 2008-03-16T16:18:22Z or 2009-02-15T17:17:23.9+01:00 or 2010-01-14T18:16:24,999876543-07:00 U Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) 1193432466 or -2138434463</pre> * * Example usage (note that you must escape format specifiers with '\\' to render them as character literals): * <pre><code>// Sample date:// 'Wed Jan 10 2007 15:05:01 GMT-0600 (Central Standard Time)'var dt = new Date('1/10/2007 03:05:01 PM GMT-0600');document.write(dt.format('Y-m-d')); // 2007-01-10document.write(dt.format('F j, Y, g:i a')); // January 10, 2007, 3:05 pmdocument.write(dt.format('l, \\t\\he jS \\of F Y h:i:s A')); // Wednesday, the 10th of January 2007 03:05:01 PM </code></pre> * * Here are some standard date/time patterns that you might find helpful. They * are not part of the source of Date.js, but to use them you can simply copy this * block of code into any script that is included after Date.js and they will also become * globally available on the Date object. Feel free to add or remove patterns as needed in your code. * <pre><code>Date.patterns = { ISO8601Long:"Y-m-d H:i:s", ISO8601Short:"Y-m-d", ShortDate: "n/j/Y", LongDate: "l, F d, Y", FullDateTime: "l, F d, Y g:i:s A", MonthDay: "F d", ShortTime: "g:i A", LongTime: "g:i:s A", SortableDateTime: "Y-m-d\\TH:i:s", UniversalSortableDateTime: "Y-m-d H:i:sO", YearMonth: "F, Y"};</code></pre> * * Example usage: * <pre><code>var dt = new Date();document.write(dt.format(Date.patterns.ShortDate)); </code></pre> *//* * Most of the date-formatting functions below are the excellent work of Baron Schwartz. * (see http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/) * They generate precompiled functions from format patterns instead of parsing and * processing each pattern every time a date is formatted. These functions are available * on every Date object. */(function() {// privateDate.formatCodeToRegex = function(character, currentGroup) { // Note: currentGroup - position in regex result array (see notes for Date.parseCodes below) var p = Date.parseCodes[character]; if (p) { p = Ext.type(p) == 'function'? p() : p; Date.parseCodes[character] = p; // reassign function result to prevent repeated execution } return p? Ext.applyIf({ c: p.c? String.format(p.c, currentGroup || "{0}") : p.c }, p) : { g:0, c:null, s:Ext.escapeRe(character) // treat unrecognised characters as literals }}// private shorthand for Date.formatCodeToRegex since we'll be using it fairly oftenvar $f = Date.formatCodeToRegex;Ext.apply(Date, { // private parseFunctions: {count:0}, parseRegexes: [], formatFunctions: {count:0}, daysInMonth : [31,28,31,30,31,30,31,31,30,31,30,31], y2kYear : 50, /** * Date interval constant * @static * @type String */ MILLI : "ms", /** * Date interval constant * @static * @type String */ SECOND : "s", /** * Date interval constant * @static * @type String */ MINUTE : "mi", /** Date interval constant * @static * @type String */ HOUR : "h", /** * Date interval constant * @static * @type String */ DAY : "d", /** * Date interval constant * @static * @type String */ MONTH : "mo", /** * Date interval constant * @static * @type String */ YEAR : "y", /** * An array of textual day names. * Override these values for international dates. * Example: *<pre><code> Date.dayNames = [ 'SundayInYourLang', 'MondayInYourLang', ... ]; </code></pre> * @type Array * @static */ dayNames : [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], /** * 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')",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -