Ext.Date

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));

开发者可以通过设置parseFunctionsformatFunctions实现自定义日期格式化与解释功能, 以满足特殊的需求。

Defined By

Properties

Ext.Date
: String

日期间隔常数

Defaults to: "d"

Ext.Date
: String

日期间隔常数

Defaults to: "h"

Ext.Date
: String

日期间隔常数

Defaults to: "ms"

Ext.Date
: String

日期间隔常数

Defaults to: "mi"

Ext.Date
: String

日期间隔常数

Defaults to: "mo"

Ext.Date
: String

日期间隔常数

Defaults to: "s"

Ext.Date
: String

日期间隔常数

Defaults to: "y"

Ext.Date
: String[]

天的文本名称的数组。 日期国际化需重写这些值。 示例:

Ext.Date.dayNames = [
    'SundayInYourLang',
    'MondayInYourLang',
    ...
];

Defaults to: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

Ext.util.Format.dateRenderer 和 Ext.util.Format.date 函数使用的日期格式的字符串。参见Ext.Date的详细信息 这可能被覆盖在区域设置文件中。 ...

Ext.util.Format.dateRendererExt.util.Format.date 函数使用的日期格式的字符串。参见Ext.Date的详细信息

这可能被覆盖在区域设置文件中。

Defaults to: "m/d/Y"

Ext.Date
: Object

对象哈希值中包含的默认日期值会在日期解析过程中使用。

可用的属性如下:

  • y : Number
    默认年份值。(默认值undefined)
  • m : Number
    默认的从1开始的月份值。 (默认值undefined)
  • d : Number
    默认的日期值。(默认值undefined)
  • h : Number
    默认的小时值。(默认值undefined)
  • i : Number
    默认的分钟值。(默认值undefined)
  • s : Number
    默认的秒值。(默认值undefined)
  • ms : Number
    默认的毫秒值。(默认值undefined)

重写这些属性自定义parse方法中所使用的默认日期值。

注意: 在一些国家遇到夏令时间(即 DST),h, i, sms 属性可能会配合 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
: String[]

月份文本名称的数组。 日期国际化需重写这些值。 示例:

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 : String
    要解析的日期字符串。
  • strict : Boolean
    如果为true,在解析时验证日期字符串 (即防止 javascript 日期转换) (默认值必须是 false)。 无效的日期字符串在解析时返回null。

若要使用日期对象,也是按照这种格式进行格式化, 相应的格式化函数必须被注入到 formatFunctions 属性中。

Ext.Date
: Boolean

全局标志,确定是否应使用严格的日期解析。 严格的日期解析将不会转换无效的日期, 这是JavaScript日期对象的默认行为。 (更多的信息,请参见parse) 默认值为 false.

Defaults to: false

Defined By

Methods

Ext.Date
( Date date, String interval, Number value ) : Date

提供执行基本日期运算的简便方法。 此方法不修改被调用的日期实例 - 它将创建并返回包含生成的日期值的一个新的日期对象实例。

示例:

// 基本用法:
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'

Parameters

  • date : Date

    日期对象

  • interval : String

    一个有效的日期间隔枚举值。

  • value : Number

    向当前日期上增加的总数。

Returns

  • Date

    新的日期对象实例。

Ext.Date
( Date date, Date start, Date end ) : Boolean

检查一个日期是否处在给定的开始日期和结束日期之间,包含这两个日期。

Parameters

  • date : Date

    要检查的日期对象

  • start : Date

    开始日期对象

  • end : Date

    结束日期对象

Returns

  • Boolean

    如果这个日期在给定的开始和结束日期之间(包含边界值)则返回true。

Ext.Date
( Date date, Boolean clone ) : Date
尝试通过将时间设置为午夜的同一天, 在适用的情况自动调整为夏令时 (DST) 清除此日期的所有时间信息。 ...

尝试通过将时间设置为午夜的同一天, 在适用的情况自动调整为夏令时 (DST) 清除此日期的所有时间信息。 (注意: 浏览器的主机操作系统的 DST 时区信息被假定为最新)

Parameters

  • date : Date

    日期对象

  • clone : Boolean

    值为“true”时创建一个当前日期对象的克隆,清除克隆对象的时间信息后返回(默认为 false)。

Returns

  • Date

    实例本身或实例的克隆。

Ext.Date
( Date date ) : Date

创建并返回一个具有完全相同的日期值作为调用实例的新的日期实例。 日期复制并按引用传递,所以如果复制的日期修改变量后, 原变量也将更改。当意图是要创建一个新的变量,并将不会修改原始实例时, 您应该创建一个克隆。

正确克隆一个日期的示例:

//错误方式:
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'

Parameters

  • date : Date

    日期对象

Returns

  • Date

    新的日期实例。

Ext.Date
( Date date, String format ) : String

根据指定的格式将对象格式化。

Parameters

  • date : Date

    需要格式字符串格式化的日期对象

  • format : String

    日期格式字符串

Returns

  • String

    格式化后的日期对象或''(如果日期参数不是一个 JavaScript 日期对象)。

检查格式字符串中是否包含日期信息。

Parameters

  • format : String

    要检查的格式字符串

Returns

  • Boolean

    如果格式字符串包含关于 date/day 的信息则返回true。

检查格式字符串中是否包含钟点信息

Parameters

  • format : String

    要检查的格式字符串

Returns

  • Boolean

    如果格式字符串包含钟点信息则返回true

Ext.Date
( Date date ) : Number

返回当前年份中天数的数值,已经根据闰年调整过。

Parameters

  • date : Date

    日期对象

Returns

  • Number

    0 到 365(闰年时为 366)。

Ext.Date
( Date date ) : Number

返回当前月份中天数的数值,已经根据闰年调整过。

Parameters

Returns

Ext.Date
( Date dateA, Date dateB ) : Number

返回两个日期之间的毫秒数

Parameters

  • dateA : Date

    第一个日期类型参数

  • dateB : Date

    (可选)第二个日期参数,默认为当前日期

Returns

  • Number

    以毫秒为单位的时间差

Ext.Date
( Date date ) : Date

返回当前月份中第一天的日期对象。

Parameters

Returns

Ext.Date
( Date date ) : Number

返回当前月份第一天的数值,已经根据闰年调整过。 返回值为以数字表示的一周中的第几天(0~6)可以与数组 dayNames (译者注:此处原文为“ monthNames ”)一起使用来表示当天的星期。 示例:

var dt = new Date('1/10/2007'),
    firstDay = Ext.Date.getFirstDayOfMonth(dt);
console.log(Ext.Date.dayNames[firstDay]); //输出: 'Monday'

Parameters

  • date : Date

    日期对象

Returns

  • Number

    一周中的天数(0~6)。

Ext.Date
( Date date, Boolean colon ) : String

返回 GMT 到当前日期的偏移量(等同于指定输出格式“O”)。

Parameters

  • date : Date

    日期对象

  • colon : Boolean

    (可选) 如果为 true,用冒号分隔小时数和分钟数(默认为 false).

Returns

  • String

    以“+”或“-”加上4位字符表示的偏移量(例如:“-0600”)。

Ext.Date
( Date date ) : Date

返回当前月份中最后一天的日期对象。

Parameters

Returns

Ext.Date
( Date date ) : Number

返回当前月份最后一天的数值,已经根据闰年调整过。 返回值为以数字表示的一周中的第几天(0~6)可以与数组dayNames (译者注:此处原文为“monthNames”) 一起使用来表示当天的星期。 示例:

var dt = new Date('1/10/2007'),
    lastDay = Ext.Date.getLastDayOfMonth(dt);
console.log(Ext.Date.dayNames[lastDay]); //输出: 'Wednesday'

Parameters

Returns

  • Number

    一周中的天数(0~6)。

Ext.Date
( String name ) : Number

根据月份的短名或全名返回从零开始的月份数值。 国际日期需重写这个函数。

Parameters

  • name : String

    短名/完整的月份名称。

Returns

  • Number

    从零开始的月份数值。

Ext.Date
( Number day ) : String

根据星期数返回对应的星期短名。 国际日期需重写这个函数。

Parameters

  • day : Number

    一个从零开始的星期数。

Returns

Ext.Date
( Number month ) : String

根据月份数返回对应的月份短名。 国际日期需重写这个函数。

Parameters

  • month : Number

    一个从零开始的月份数。

Returns

Ext.Date
( Date date ) : String

返回当天的英文单词的后缀(等同于指定输出格式“S”)。

Parameters

Returns

  • String

    'st, 'nd', 'rd' 或者 'th'。

Ext.Date
( Date date ) : String

返回当前日期的时区缩写(等同于指定输出格式“T”)。

注意: 对于不同的浏览器(例如 FF 与 IE)和系统区域设置(例如 IE 设置为亚洲与 IE 设置为美国), 通过 javascript 对象的 tostring() 方法返回的日期字符串也会发生变化。 对于一个给定的日期字符串,例如 "Thu Oct 25 2007 22:55:35 GMT+0800 (Malay Peninsula Standard Time)", getTimezone() 方法首先尝试从一对括号之间获取时区缩写 (可能存在或不存在),如果获取不成功它将从日期字符串的 GMT 偏移量部分获取时区缩写。

Parameters

  • date : Date

    日期对象

Returns

  • String

    时区名称的缩写(例如 'CST', 'PDT', 'EDT', 'MPST' ...).

Ext.Date
( Date date ) : Number

从年份中获取 ISO-8601 标准的星期数。 (等同于指定输出格式“W”,但没有补0)。

Parameters

  • date : Date

    日期对象

Returns

  • Number

    返回范围从 1 到 53 中

Ext.Date
( Date date ) : Boolean

检查指定日期是否受夏令时(DST)影响。

Parameters

  • date : Date

    日期对象

Returns

  • Boolean

    如果当前日期受夏令时(DST)影响,则返回true。

Ext.Date
( Date date1, Date date2 ) : Boolean

通过比较两个日期对象的值来判断两个日期是否相等。

Parameters

Returns

  • Boolean

    如果日期值相等则返回true

Ext.Date
( Date date ) : Boolean

返回当前日期是否闰年。

Parameters

  • date : Date

    日期对象

Returns

  • Boolean

    如果当前日期属于闰年返回true,否则返回false。

Ext.Date
( Number year, Number month, Number day, Number hour, Number minute, Number second, Number millisecond ) : Boolean

检查传递的参数是否可以转换为哟个有效的的javascript日期对象。

Parameters

  • year : Number

    4位年份

  • month : Number

    从1开始的月份

  • day : Number

    月份中的天数

  • hour : Number

    (可选) 小时

  • minute : Number

    (可选) 分钟

  • second : Number

    (可选) 秒

  • millisecond : Number

    (可选) 毫秒

Returns

  • Boolean

    如果传递的参数不会导致转换成日期,则返回false,否则返回true。

Ext.Date
( ) : Number

返回当前的时间戳

Returns

Ext.Date
( String input, String format, Boolean strict ) : Date

使用指定的日期格式来解析传递的字符串。 注意,该函数接受的是普通的日历格式,意味着月份从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

Parameters

  • input : String

    将被解析的日期字符串。

  • format : String

    预期的日期字符串格式。

  • strict : Boolean

    (可选) true 则在解析时(即防止JavaScript日期“反转”)校验日期格式字符串

                        (默认为false)。 无效的日期字符串解析时将返回null。
    

Returns

  • Date

    解析的日期对象。

Ext.Date
( Object date )private

当前私有

Parameters

Ext.Date
( String format ) : String
移除所有的转义的日期格式字符串。在日期格式中, 使用一个'\'可以用来转义特殊字符。 ...

移除所有的转义的日期格式字符串。在日期格式中, 使用一个'\'可以用来转义特殊字符。

Parameters

  • format : String

    要恢复原义的格式字符串

Returns

  • String

    非转义的格式字符串