Files
提供了处理日期的常用的静态方法的集合。 注意,如果Ext.Date需要加载,为方便起见, 它会复制到该对象所有的方法和属性。
日期的处理和格式化是 PHP's date() function的一个子集, 提供的格式和转换后的结果将和 PHP 版本的一模一样。
下面列出的是目前所有支持的格式:
格式符 说明 输出 ------ ----------------------------------------------------------------------- ----------------------- d 月份中的天数,两位数字,不足位补“0” 01到31 D 当前星期的缩写,三个字母 Mon到Sun j 月份中的天数,不补“0” 1到31 l 当前星期的完整拼写 Sunday到Saturday N ISO-8601 标准表示的一周之中的天数(1~7) 1 (表示 Monday) 到 7 (表示 Sunday) S 英语中月份天数的序数词的后缀,2个字符 st, nd, rd 或 th。与格式符“j”连用 w 一周之中的天数(0~6) 0 (表示 Sunday) 到 6 (表示 Saturday) z 一年之中的天数(从 0 开始) 0到364 (闰年含365) W 一年之中的ISO-8601周数,周从星期一开始 01到53 F 当前月份的完整拼写, 例如January或March January到December m 当前的月份,两位数字,不足位补“0” 01到12 M 当前月份的缩写,三个字母 Jan到Dec n 当前的月份,不补“0” 1到12 t 当前月份的总天数 28到31 L 是否闰年 “1”为闰年,“0”为平年 o ISO-8601 年数 (对于(Y)相同,但如果ISO星期数(W) 示例: 1998 或 2004 属于到上一年或下一年, 那一年则被改用) Y 4位数字表示的当前年数 示例: 1999 或 2003 y 2位数字表示的当前年数 示例: 99 或 03 a 小写的“am”和“pm” am或pm A 大写的“AM”和“PM” AM或PM g 12小时制表示的当前小时数,不补“0” 1到12 G 24小时制表示的当前小时数,不补“0” 0到23 h 12小时制表示的当前小时数,不足位补“0” 01到12 H 24小时制表示的当前小时数,不足位补“0” 00到23 i 分钟数,不足位补“0” 00到59 s 秒数,不足位补“0” 00到59 u 秒数的小数形式 示例: (最低1位数,允许任意位数的数字) 001 (即 0.001s) 或 100 (即 0.100s) 或 999 (即 0.999s) 或 999876543210 (即 0.999876543210s) O 用小时数表示的与 GMT 差异数 示例: +1030 P 以带冒号的小时和分钟表示与 GMT 差异数 示例: -08:00 T 当前系统设定的时区 示例: EST, MDT, PDT ... Z 用秒数表示的时区偏移量(西方为负数,东方为正数) -43200 到 50400 c ISO 8601 日期 注意: 示例: 1) 如果未指定,则月/日默认为当前月/日, 1991 或 时间默认为午夜时间, 同时时区默认为 1992-10 或 浏览器设置的时区。如果指定时间, 1993-09-20 或 则它必须包括小时和分钟。 1994-08-19T16:20+01:00 或 "T" 分隔符、秒、毫秒和时区是可选的。 1995-07-18T17:21:28-02:00 或 2) 一个秒数的小数部分,如果指定, 必须包含至少1位数字 1996-06-17T18:22:29.98765+03:00 或 (在这里允许位数的最大数目没有限制), 1997-05-16T19:23:30,12345-0400 或 并可由一个 '.' 或一个 ',' 分隔。 1998-04-15T20:24:31.2468Z 或 参见右边的例子为所支持的各级日期时间粒度, 1999-03-14T20:24:32Z 或 或参见http://www.w3.org/TR/NOTE-datetime 2000-02-13T21:25:33 查阅更多相关信息。 2001-01-12 22:26:34 U 自 Unix 新纪元(January 1 1970 00:00:00 GMT) 以来的秒数 1193432466 或 -2138434463 MS Microsoft AJAX 序列化的日期 \/Date(1238606590509)\/ (即 UTC milliseconds since epoch) 或 \/Date(1238606590509+0800)\/
用法举例:(注意你必须在字母前使用转意字符“\”才能将其作为字母本身而不是格式符输出):
// 样本数据:
// 'Wed Jan 10 2007 15:05:01 GMT-0600 (中区标准时间)'
var dt = new Date('1/10/2007 03:05:01 PM GMT-0600');
console.log(Ext.Date.format(dt, 'Y-m-d')); // 2007-01-10
console.log(Ext.Date.format(dt, 'F j, Y, g:i a')); // January 10, 2007, 3:05 pm
console.log(Ext.Date.format(dt, 'l, \\t\\he jS \\of F Y h:i:s A')); // Wednesday, the 10th of January 2007 03:05:01 PM
下面有一些标准的日期/时间模板可能会对你有用。 它们不是 Date.js 的一部分,但是你可以将下列代码拷出,并放在 Date.js 之后所引用的任何脚本内, 都将成为一个全局变量,并对所有的 Date 对象起作用。 你可以按照你的需要随意增加、删除此段代码。
Ext.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"
};
用法示例:
var dt = new Date();
console.log(Ext.Date.format(dt, Ext.Date.patterns.ShortDate));
开发者可以通过设置parseFunctions 和 formatFunctions实现自定义日期格式化与解释功能, 以满足特殊的需求。
天的文本名称的数组。 日期国际化需重写这些值。 示例:
Ext.Date.dayNames = [
'SundayInYourLang',
'MondayInYourLang',
...
];
Defaults to: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
Ext.util.Format.dateRenderer 和 Ext.util.Format.date 函数使用的日期格式的字符串。参见Ext.Date的详细信息
这可能被覆盖在区域设置文件中。
Defaults to: "m/d/Y"
对象哈希值中包含的默认日期值会在日期解析过程中使用。
可用的属性如下:
y
: Numberm
: Numberd
: Numberh
: Numberi
: Numbers
: Numberms
: Number重写这些属性自定义parse方法中所使用的默认日期值。
注意: 在一些国家遇到夏令时间(即 DST),h, i, s 和 ms 属性可能会配合 DST 生效的确切时间。 它是开发人员考虑此情况的责任。
用法示例:
// 将默认天的值设置为该月的第一天
Ext.Date.defaults.d = 1;
// 解析一个包含只有年份和月份值的2月份的日期字符串
// 当试图解析下面的日期字符串,例如, March 31st 2009,
// 将一天的默认值设置为 1 可防止日期转换时的怪异问题。
Ext.Date.parse('2009-02', 'Y-m'); // 返回一个表示 February 1st 2009 的日期对象
Defaults to: {}
通过format方法使用的格式函数哈希映射的基本格式代码。 格式函数是字符串(或返回字符串的函数), 当format方法被调用时, 从日期对象的上下文中计算后返回相应的值。 添加/重写这些映射为自定义的日期格式。 注意:如果不能找到适当的映射,Ext.Date.format() 会将字符视为文字, 示例:
Ext.Date.formatCodes.x = "Ext.util.Format.leftPad(this.getDate(), 2, '0')";
console.log(Ext.Date.format(new Date(), 'X'); // 返回当前月的第几天
在其中每个属性是一个日期格式函数对象哈希值。 属性的名称作为格式字符串,与生成的格式化日期字符串相对应。
此对象会自动填充日期格式化函数并满足 Ext 标准格式化字符串要求的日期格式。
自定义格式函数可被插入到该对象中, 键入的名称由此可能被format用作一个格式字符串。示例:
Ext.Date.formatFunctions['x-date-format'] = myDateFormatter;
格式化函数应该返回一个字符串表示传递的日期对象,并传递以下参数:
date
: Date若要使用日期字符串,也是按照这种格式进行解析, 相应的解析函数必须被注入到 parseFunctions 属性中。
月份文本名称的数组。 日期国际化需重写这些值。 示例:
Ext.Date.monthNames = [
'JanInYourLang',
'FebInYourLang',
...
];
Defaults to: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
一个对象关于从零开始的 javascript 月份数的哈希值(使用月份短名作为键。 注意:键值区分大小写)。 日期国际化需重写这些值。 示例:
Ext.Date.monthNumbers = {
'LongJanNameInYourLang': 0,
'ShortJanNameInYourLang':0,
'LongFebNameInYourLang':1,
'ShortFebNameInYourLang':1,
...
};
Defaults to: {January: 0, Jan: 0, February: 1, Feb: 1, March: 2, Mar: 2, April: 3, Apr: 3, May: 4, June: 5, Jun: 5, July: 6, Jul: 6, August: 7, Aug: 7, September: 8, Sep: 8, October: 9, Oct: 9, November: 10, Nov: 10, December: 11, Dec: 11}
在其中每个属性是一个日期解析函数对象哈希值。 属性名称是该函数解析的格式字符串。
此对象会自动填充日期解析函数并满足 Ext 标准格式化字符串要求的日期格式。
自定义解析函数可被插入到该对象中, 键入的名称由此可能被parse用作一个格式字符串。
示例:
Ext.Date.parseFunctions['x-date-format'] = myDateParser;
解析函数应返回一个日期对象,并传递下列参数:
date
: Stringstrict
: Boolean若要使用日期对象,也是按照这种格式进行格式化, 相应的格式化函数必须被注入到 formatFunctions 属性中。
提供执行基本日期运算的简便方法。 此方法不修改被调用的日期实例 - 它将创建并返回包含生成的日期值的一个新的日期对象实例。
示例:
// 基本用法:
var dt = Ext.Date.add(new Date('10/29/2006'), Ext.Date.DAY, 5);
console.log(dt); //返回 'Fri Nov 03 2006 00:00:00'
// 负数将按照减法运算:
var dt2 = Ext.Date.add(new Date('10/1/2006'), Ext.Date.DAY, -5);
console.log(dt2); //返回 'Tue Sep 26 2006 00:00:00'
新的日期对象实例。
创建并返回一个具有完全相同的日期值作为调用实例的新的日期实例。 日期复制并按引用传递,所以如果复制的日期修改变量后, 原变量也将更改。当意图是要创建一个新的变量,并将不会修改原始实例时, 您应该创建一个克隆。
正确克隆一个日期的示例:
//错误方式:
var orig = new Date('10/1/2006');
var copy = orig;
copy.setDate(5);
console.log(orig); //返回 'Thu Oct 05 2006'!
//正确方式:
var orig = new Date('10/1/2006'),
copy = Ext.Date.clone(orig);
copy.setDate(5);
console.log(orig); //返回 'Thu Oct 01 2006'
日期对象
新的日期实例。
返回当前月份第一天的数值,已经根据闰年调整过。 返回值为以数字表示的一周中的第几天(0~6)可以与数组 dayNames (译者注:此处原文为“ monthNames ”)一起使用来表示当天的星期。 示例:
var dt = new Date('1/10/2007'),
firstDay = Ext.Date.getFirstDayOfMonth(dt);
console.log(Ext.Date.dayNames[firstDay]); //输出: 'Monday'
日期对象
一周中的天数(0~6)。
返回当前月份最后一天的数值,已经根据闰年调整过。 返回值为以数字表示的一周中的第几天(0~6)可以与数组dayNames (译者注:此处原文为“monthNames”) 一起使用来表示当天的星期。 示例:
var dt = new Date('1/10/2007'),
lastDay = Ext.Date.getLastDayOfMonth(dt);
console.log(Ext.Date.dayNames[lastDay]); //输出: 'Wednesday'
日期
一周中的天数(0~6)。
返回当前日期的时区缩写(等同于指定输出格式“T”)。
注意: 对于不同的浏览器(例如 FF 与 IE)和系统区域设置(例如 IE 设置为亚洲与 IE 设置为美国), 通过 javascript 对象的 tostring() 方法返回的日期字符串也会发生变化。 对于一个给定的日期字符串,例如 "Thu Oct 25 2007 22:55:35 GMT+0800 (Malay Peninsula Standard Time)", getTimezone() 方法首先尝试从一对括号之间获取时区缩写 (可能存在或不存在),如果获取不成功它将从日期字符串的 GMT 偏移量部分获取时区缩写。
日期对象
时区名称的缩写(例如 'CST', 'PDT', 'EDT', 'MPST' ...).
使用指定的日期格式来解析传递的字符串。 注意,该函数接受的是普通的日历格式,意味着月份从1开始 (即 1 = January)。 defaults 哈希值将用于传递的字符串不能找到任何日期值(即 year, month, day, hour, minute, second 或 millisecond)的情况中。 如果一个相应的缺省日期值没有被指定在 defaults 哈希值中, 当前日期的年、月、日或 DST 调整的零-小时时间值将用来替代。 一定要注意,为了解析操作是成功的(解析失败将返回空值), 输入日期字符串必须精确匹配指定的格式字符串。
示例:
//dt = Fri May 25 2007 (当前日期)
var dt = new Date();
//dt = Thu May 25 2006 (今天月份/日期在2006年中的日期)
dt = Ext.Date.parse("2006", "Y");
//dt = Sun Jan 15 2006 (指定日期所有部分)
dt = Ext.Date.parse("2006-01-15", "Y-m-d");
//dt = Sun Jan 15 2006 15:20:01
dt = Ext.Date.parse("2006-01-15 3:20:01 PM", "Y-m-d g:i:s A");
// 尝试在严格模式下解析 Sun Feb 29 2006 03:20:01
dt = Ext.Date.parse("2006-02-29 03:20:01", "Y-m-d H:i:s", true); // 返回 null
将被解析的日期字符串。
预期的日期字符串格式。
(可选) true 则在解析时(即防止JavaScript日期“反转”)校验日期格式字符串
(默认为false)。 无效的日期字符串解析时将返回null。
解析的日期对象。