JavaScript日期 Date 对象

 2015年06月06日    382     声明


Date对象用于日用于处理日期和时间,ECMAScript中,Date类型使用UTC(Coordinated Universal Time,国际协调时间) 时间戳保存日期,可表示的时间范围为1970年1月1日0时之前和之后的285 616年。

  1. Date对象初始化
  2. Date对象属性
  3. 日期时间格式化方法
  4. 日期时间操作方法
  5. 继承自Object的方法


1. Date对象初始化

1.1 使用构造函数

创建Date对象可以使Date构造函数。示例如下:

var now = new Date();

Date不传递参数时,新建的日期时间对象将会获取当前时间。如果需要根据特定的日期、时间创建日期对象,必须在初始化时传入表示访时间的毫秒数。也可以使用传入字符串通过Date.parse()Date.UTC()方法将字符串转换为时间戳。


1.2 使用Date.parse()方法

Date.parse()方法接受一个表示日期/时间的字符串参数,然后尝试进行转换,转换后返回日期/时间的毫秒数。Date.parse()没有定义字符串传入的格式,因此方法的转换会因浏览器实现和地区而异。Date.parse()可接受的格式有:

  • “月/日/年”,如 6/8/2015
  • “月的英文 日,年”,如 June 8,2015
  • “英文星期 英文月 日 年 时:分:秒 时区”,如 Sun June 8 2015 00:00:00 GMT-0800
  • ISO 8601 扩展格式 “YYYY-MM-DDTHH:mm:ss.sssZ”,如 2015-06-08T00:00:00。支持ECMAScript5才能支持此格式

基于2015年6月8日创建一个日期对象,Date.parse()方法转换失败时,会返回NaN。示例如下:

var myDate = new Date(Date.parse('June 8,2015'));
var myOtherDate = new Date('June 8,2015');

以上两个初始化方法是等价的,直接将日期/时间字符串传给构造函数时,构造函数会在后台调用Date.parse()方法。


1.3 使用Date.UTC()方法

Date.UTC()方法也会返回日期/时间的毫秒数。与Date.parse()方法不同的是,Date.UTC()参数为年、基于0的月份(1月是0、12月是11)、月中的天(1到31)、小时数(0到23)、分钟、秒、毫秒。年和月为必需参数,其它为可选参数。示例如下:

//GMT时间,2015年6月1日
var myDate = new Date(Date.UTC(2015,5));
//GMT时间,2015年6月8日14点35分
var myOtherDate = new Date(Date.UTC(2015,5,8,14,35));

Date构造函数也可以按Date.UTC()的时间格式进行初始化,但与Date.UTC()方法不同,日期和时间都是使用本地时区而非GTM世界标准时间。示例如下:

var myDate = new Date(Date.UTC(2015,5,8,14,35));    // Mon Jun 08 2015 22:35:00 GMT+0800 (CST)
var myOtherDate = new Date(2015,5,8,14,35);              //Mon Jun 08 2015 14:35:00 GMT+0800 (CST)


2. Date对象属性

Date对象从Object对象继承了两个属性

属性 描述
constructor 返回对创建Date对象的构造函数的引用。
prototype 使你可以向Date对象添加属性和方法。

2.1 constructor属性

constructor 返回对创建Date对象的构造函数的引用。示例如下:

var myDate = new Date();
console.log(myDate.constructor===Date)    // true

2.3 prototype属性

使你可以向Date对象添加属性和方法。示例如下:

var myDate = new Date();
Date.prototype.isToday = function () {
	return true;
}
console.log(myDate.isToday());	// true


3. 日期时间格式化方法

Date对象中有一些用于日期格式化的方法,方法如下:

方法 描述
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。

各方法格式化后显示格式如下:

var myDate = new Date(2015,5,8,14,35);

console.log(myDate.toTimeString());	       // 14:35:00 GMT+0800 (CST)
console.log(myDate.toDateString());	       // Mon Jun 08 2015
console.log(myDate.toGMTString());	       // Mon, 08 Jun 2015 06:35:00 GMT
console.log(myDate.toUTCString());	       // Mon, 08 Jun 2015 06:35:00 GMT
console.log(myDate.toLocaleTimeString());  // 14:35:00
console.log(myDate.toLocaleDateString());  // Monday, June 08, 2015


4. 日期时间操作方法

Date对象中还有一些日期/时间的组件方法,这些方法可以取得或设置Date对象的部分值。

方法 描述
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。


5. 继承自Object的方法

Date对象是引用类型,与其它引用类型一样,Date 类型也重写了继承自Object的三个方法。方法如下:

方法 描述
toString() 把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
valueOf() 返回 Date 对象的原始值。

使用示例:

var myDate = new Date(2015,5,8,14,35);

console.log(myDate.toString());	           // Mon Jun 08 2015 14:35:00 GMT+0800 (CST)
console.log(myDate.toLocaleString());	   // Mon Jun 08 2015 14:35:00 GMT+0800 (CST)
console.log(myDate.valueOf());	           // 1433745300000