JavaScript02引用类型之Date类型

一、创建日期对象

创建一个日期对象,使用 new 操作符和 Date 构造函数即可:

var date = new Date();
console.log(date); // Wed Jun 19 2019 13:56:56 GMT+0800 (中国标准时间)

如果想根据指定的日期和时间创建对象,ECMAScript 提供了两个方法:Date.parse() 和 Date.UTC()。

1.1、Date.parse()

Date.parse() 接收一个表示日期的字符串参数,然后返回相应的日期。通常支持下列几种日期格式:

console.log(new Date(Date.parse("6/19/2019"))); // Wed Jun 19 2019 00:00:00 GMT+0800 (中国标准时间)
console.log(new Date(Date.parse("June 19,2019"))); // Wed Jun 19 2019 00:00:00 GMT+0800 (中国标准时间)
console.log(new Date(Date.parse("Wed Jun 19 2019 00:00:00 GMT+0800"))); // Wed Jun 19 2019 00:00:00 GMT+0800 (中国标准时间)
console.log(new Date(Date.parse("2019-6-19T15:00:00"))); //  Wed Jun 19 2019 15:00:00 GMT+0800 (中国标准时间)

如果直接将表示日期的字符串传给构造函数 Date,他也会在后台调用 Date.parse():

console.log(new Date("6/19/2019")); //  Wed Jun 19 2019 00:00:00 GMT+0800 (中国标准时间)

1.2、Date.UTC()

Date.UTC() 同样也能返回日期,他接收的并不是字符串,接收的参数分别为:年,月(1月是0),日,时(当前时间-8),分,秒。

支持下列几种日期格式:

console.log(new Date(Date.UTC(2019, 0))); // Tue Jan 01 2019 08:00:00 GMT+0800 (中国标准时间)
console.log(new Date(Date.UTC(2019, 5, 19, 7, 15, 25))); // Wed Jun 19 2019 15:15:25 GMT+0800 (中国标准时间)
// 和 Date.parse() 一样,可以将参数直接传给 Date 构造函数:
console.log(new Date(2019, 0)); // Tue Jan 01 2019 00:00:00 GMT+0800 (中国标准时间)

1.3、Date.now()

ECMAScript5 提供了 Date.now() 方法,返回表示调用这个方法时的日期毫秒数。

var start = Date.now();
console.log(start); // 1560930804332
var startPar = new Date(start);
console.log(startPar); //  Wed Jun 19 2019 15:53:28 GMT+0800 (中国标准时间)

可以利用 Date.now() 这个方法算出一个程序开始到结束的时间是多久:

function timeCycleFun() {
    var startTime = Date.now();
    console.log(startTime); // 1560932981489
    setTimeout(function endTime() {
        console.log(Date.now()); // 1560932986491
        var cycleTime = Date.now() - startTime;
        console.log(cycleTime); // 5002
    }, 5000);
};
timeCycleFun();

上面代码中,我先在方法中定义了一个当前时间,得到了一个当前时间的时间戳,然后使用 setTimeout() 定时器,5s 之后再次获取一下当前时间,得到一个差值,这样就算出了这段程序在开始到结束用了多长时间。

补充:Date.now() 得到的是一个时间戳,可以使用 new 操作符和 Date 构造函数将这个时间戳转换为标准的日期格式,例:

var nowDate = Date.now();
console.log(nowDate); // 1560935799611
console.log(new Date(nowDate)); // Wed Jun 19 2019 17:16:39 GMT+0800 (中国标准时间)

二、继承的方法

与其他引用类型一样,Date 类型也同样具有 toString()、toLocaleString()、valueOf() 这些方法,
只是这些方法返回的值与其他类型不同。

  • toString() 根据浏览器的标准返回一个标准的日期格式。
  • toLocaleString() 根据浏览器的标准返回一个标准的日期格式。
  • valueOf() 返回一个时间戳,可以用来比较日期值。
var date = new Date();
console.log(date); // Wed Jun 19 2019 17:18:01 GMT+0800 (中国标准时间)
console.log(date.toString()); // Wed Jun 19 2019 17:18:01 GMT+0800 (中国标准时间)
console.log(date.toLocaleString()); // 2019/6/19 下午5:18:01
console.log(date.valueOf()); // 1560936003344

三、日期格式化方法

Date 类型还有一些用于将日期转换为字符串的方法:

  • toDateString()
  • toLocaleDateString()
  • toTimeString()
  • toLocaleTimeString()
  • toUTCString()
var date = new Date();
console.log(date); // Thu Jun 20 2019 11:11:25 GMT+0800 (中国标准时间)
console.log(date.toDateString()); // Thu Jun 20 2019
console.log(date.toLocaleDateString()); // 2019/6/20
console.log(date.toTimeString()); // 11:11:25 GMT+0800 (中国标准时间)
console.log(date.toLocaleTimeString()); // 上午11:11:25
console.log(date.toUTCString()); //  Thu, 20 Jun 2019 03:11:25 GMT

四、日期时间/组件方法

Date 还有很多可以直接取得和设置日期值中特定部分的方法,下边我列举一些比较常用的:

var date = new Date();
console.log(date);
var year = date.getFullYear(); // 获取年
console.log(year); // 2019
var mouth = date.getMonth(); // 获取月(0 代表 1 月,所以获取当前月份加 1 即可)
console.log(mouth + 1); // 6
var day = date.getDate(); // 获取日
console.log(day); // 20
var week = date.getDay(); // 获取星期(0 代表星期日)
var weekArr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
console.log(weekArr[week]); // 星期四
var hours = date.getHours(); // 时
console.log(hours); // 17
var minutes = date.getMinutes(); // 分
console.log(minutes); // 2
var seconds = date.getSeconds(); // 秒
console.log(seconds); // 25
var nowDate = '当前时间:' + year + '年' + mouth + '月' + day + '日,' + weekArr[week] + ',' + hours + ':' + minutes + ':' + seconds
console.log(nowDate);  // 当前时间:2019年5月20日,星期四,17:2:30

上边每个方法也都有一个 set 方法与之对应。

如果要将当前时间放到页面上,可以将获取时间的代码放到一个方法中,使用 setInterval() 每 500ms 调用一次这个方法,就实现了页面实时更新时间的方法。

你可能感兴趣的:(JavaScript02引用类型之Date类型)