Date类型
使用自 UTC (Coodinated Universal Time, 国际协调时间) 1970年1月1日午夜(零时)开始的毫秒数 来保存日期
- Date 类型保存的日期 能够横跨 1970年1月1日 之前 或 之后 的 100000000 年
创建 Date
无参 构造函数,创建的对象,自动获得当前日期和时间
var now = new Date();
var now = new Date("May 25, 2004");
等同于:(会在后台调用Date.Parse())
var someDate = new Date(Date.parse("May 25, 2004"));
//GMT时间2000年1月1日午夜零时
var y2k = new Date(Date.UTC(2000, 0));
//GMT时间2005年5月5日下午5:55:55
var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));
不等同!是本地时间,而不是GMT时间
//本地时间2000年1月1日午夜零时
var y2k = new Date(2000, 0);
//本地时间2005年5月5日下午5:55:55
var allFives = new Date(2005, 4, 5, 17, 55, 55);
Date.Parse()和Date.UTC()
- 给
Date类型的构造函数,传入 表示日期 的毫秒数。以下方法用于得到这个毫秒数:Date.Parse(): 接收一个 表示日期 的字符串- 如果字符串不表示日期,则返回
NaN - ECMA-262没有定义 日期格式。因此,这个方法的行为,因浏览器实现和地区而定
- 将地区设置为美国的浏览器 都接收以下 日期格式
格式 例子 月/日/年 6/13/2004 英文月名 日,年 January 12, 2004 英文星期几 英文月名 日 年 时:分:秒 时区 Tue May 25 2004 00:00:00 GMT-0700 ISO 8601扩展格式 YYYY-MM-DDTHH:mm:ss.sssZ (仅兼容ECMAScript5时) 2004-05-25T00:00:00
- 如果字符串不表示日期,则返回
Date.UTC(): 接收以下参数:- (必选)年份
- (必选)基于0的月份 (一月是0, 二月是1,以此类推)
- (可选)月中的哪一天 (1到31)(若省略,则为1)
- (可选)小时数(0到23)(若省略,则为0)
- (可选)分钟(若省略,则为0)
- (可选)秒(若省略,则为0)
- (可选)毫秒数(若省略,则为0)
Date.Parse()和Date.UTC()在构建这个毫秒数时,使用不同的信息
Date.now()
调用时刻的 日期和时间 的毫秒数
var start = Date.now();
在不支持
Date.now()的浏览器中,可以用+
var start = +new Date();
Date 继承的方法
toLocalString()
会按照 与浏览器 设置的地区 相适应的格式 返回 日期和时间
- 会包含 AM或PM
- 不会包含 时区 (因浏览器而异)
toString()
返回 日期和时间
- 时间为 军用时间 (0到23表示)
- 包含 时区
- PST (Pacific Standard Time, 太平洋标准时间)
Date重写的toLocalString()和toString()在不同浏览器 的格式 可谓大相径庭
Date重写的toLocalString()和toString()一般只用于调试
valueOf()
- 不返回 字符串
- 返回 表示日期的 毫秒数
- 方便 比较日期值 (用比较操作符)
var date1 = new Date(2007, 0, 1);
var date2 = new Date(2007, 1, 1);
alert(date1 < date2); //true
alert(date1 > date2); //false
将 日期 格式化为 字符串 的方法
toDateString(): (特定于实现)星期几, 月,日, 年toTimeString(): (特定于实现)时,分,秒,时区toLocaleDateString(): (特定于地区)星期几, 月,日, 年toLocaleTimeString(): (特定于实现)时,分,秒toUTCString(): (特定于实现)完整的UTC日期toGMTString(): 存在是为了确保向后兼容。与toUTCString()等价,更推荐使用toUTCString()
以上方法的输出格式,都因浏览器而异
Date类的方法
直接取得 和 设置 日期值 中特定部分的方法,如下:
| 方法 | 说明 |
|---|---|
getTime() | 与valueOf()一样。返回表示日期的毫秒数 |
setTime(毫秒) | 设置日期,会改变整个日期 |
getFullYear() | 4位数的年份,如2007,而不是07 |
getUTCFullYear() | UTC日期的4位数年份 |
setFullYear(年) | 传入的必须是4位数的年份 |
setUTCFullYear(年) | |
getMonth() | 0表示一月,11表示十二月 |
getUTCMonth() | |
setMonth(月) | 传入的必须大于0,超过11则增加年份 |
setUTCMonth(月) | |
getDate() | 1到31 |
getUTCDate() | |
setDate(日) | 传入的超过了该月应有的天数,则增加月份 |
setUTCDate(日) | |
getDay() | 0表示星期日,6表示星期六 |
getUTCDay() | |
getHours() | 0到23 |
getUTCHours() | |
setHours(时) | 超过23则增加天数 |
setUTCHours(时) | |
getMinutes() | 0到59 |
getUTCMinutes() | |
setMinutes(分) | 超过59则增加小时数 |
setUTCMinutes(分) | |
getSeconds() | 0到59 |
getUTCSeconds() | |
setSeconds(秒) | 超过59则增加分钟数 |
setUTCSeconds(秒) | |
getMilliSeconds() | 返回日期中的毫秒数 |
getUTCMilliSeconds() | |
setMilliSeconds(毫秒) | |
setUTCMilliSeconds(毫秒) | |
getTimezoneOffset() | 返回本地时间宇UTC时间相差得分钟数。例如美国东部标准时间返回300。在某地进入夏令时的情况下,这个值会有所变化 |