Date()
1、简介
Date()是js中的一个内置对象,专门用于获取时间的。
Date 对象基于 Unix Time Stamp(即自 1970 年 1 月 1 日(UTC)起经过的毫秒数)
我们先了解下下面几个与时间有关的概念:
(1)GMT【格林威治标准时间】,以伦敦格林威治的子午线为基线,以地球自转为标准,全球都以此标准设定时间。(不过当前已经被UTC取代了)格式规范如下:
Sun, 30 Aug 2022 15:09:23 GMT
(2)UTC【时间协调时间/世界标准时间】,是当前世界时间的标准,在时刻上尽量接近于格林威治标准时间,并且大多数用途来说,UTC时间被认为可以和GMT时间互换,他们两者基本相等。但现在GMT时间不再被科学界所认可,因为地球每天的自转是有些不规则的,并且正在慢慢减速。不过需要注意,如果需要进行精密时间的测量例如毫秒及以下,那么就需要用UTC时间,而UTC时间的格式就是ISO格式。
(3)ISO标准时间,全称是ISO 8601,是一种日期/时间表示方法的规范,规定了一种明确的,国际上都能理解的日历和始终格式。
如下:
2020-08-30T15:09:23.786Z
字符T表示后面跟的是时间,字母Z表示UTC统一时间,786表示毫秒数
(4)本地时间:就是在UTC上加上本地所在时区。
(5)时间戳,全称Unix时间戳,一个 Unix 时间戳(Unix Time Stamp),它是一个整数值,表示自 1970 年 1 月 1 日 00:00:00 UTC(the Unix epoch)以来的毫秒数,忽略了闰秒。请注意大多数 Unix 时间戳功能仅精确到最接近的秒。
例如:
1670479625056
2、语法
2.1 创建Date实例对象
1. 不提供参数时,表示实例化当前时刻的日期和时间
let now = new Date()
console.log(now); // 2022-12-08T03:27:26.857Z
2. 带参数时
2.1 传入一个Unix时间戳
var timestamp =(new Date()).valueOf(); // 通过valueOf()方法获取当前时间的时间戳
let date1 = new Date(timestamp) // 传入时间戳
console.log(date1); // 2022-12-08T07:26:16.218Z
2.2 传入一个时间戳字符串
var date2 = new Date('2019-10-1 8:8:8');
console.log(date2); // 2019-10-01T00:08:08.000Z
2.3 分别提供日期与时间的每一个成员
new Date(年,月,日,时,分,秒,毫秒)
var date3 = new Date(2022,11,8,11,12,30)
var date4 = new Date(2022,12,8,11,12,30)
console.log(date3); // 2022-12-08T03:12:30.000Z
console.log(date4); // 2023-01-08T03:12:30.000Z
需要注意的是:
(1)年:表示年份的整数值。如果写个0~99之间的数字,则会被映射成1900至1999年
(2)月:表示月份的整数值,从0(0表示1月)到11(11表示12月)
(3)日:一个月中的第几天,也可以看成是每个月的多少号,默认值为1
(4)时分秒毫秒的默认值均为0
(5)当Date作为构造函数调用并传入多个参数时,如果数值大于合理范围则会进行”进位“,例如:月份写成2022年13月,则会被调整成2023年1月,再例如,1小时70分钟,则会被调整为2小时10分
(6)JavaScript 的时间由世界标准时间(UTC)1970 年 1 月 1 日开始,用毫秒计时,一天由 86,400,000 毫秒组成。Date 对象的范围是 -100,000,000 天至 100,000,000 天(等效的毫秒值)
2.2 Date中的方法
2.2.1 静态方法
Date.now()
返回自1970-1-1 00:00:00 UTC(世界标准时间)至今所经过的毫秒数
console.log(Date.now()); // 1670479625056
Date.parse()
解析一个表示日期的字符串,并返回从1970-1-1 00:00:00所经过的毫秒数
console.log(Date.parse("2022-1-1")); // 1640966400000
由于浏览器之间的差异与不一致性,强烈不推荐使用Date构造函数来解析日期字符串 ,同样不推荐使用与其等价的Date.parse进行日期字符串的解析
Date.UTC()
接受和构造函数最长形式的参数相同的参数(从2到7),并返回从1970-01-01 00:00:00 UTC开始经过的毫秒数)
console.log(Date.UTC(2022,3,20,22,19,23,3)); // 1650493163003
2.2.2 实例方法
方法名 | 描述 |
---|---|
getFullYear() | 获取当年(如2022) |
getYear() | 获取距离1900年多少年 |
getMonth() | 获取当月(0-11) |
getDate() | 获取当天(0-31) |
getDay() | 获取星期几(0-6,0表示周日) |
getHours() | 获取当前小时 |
getMinutes() | 获取当前分钟 |
getSeconds() | 获取当前秒 |
getMilliseconds() | 获取当前毫秒数 |
getTime() | 获取自UTC以来的毫秒数 |
getUTCDate() | 以UTC为标准,返回一个月中的那一日 |
getUTCDay() | 以UTC为标准,返回一周中的第几天 |
getUTCFullYear | 以UTC为标准,返回一个完整年份 |
getUTCMonth() | 以UTC为标准,返回月份(0-11) |
getUTCHours() | 以UTC为标准,返回小时 |
getUTCMinutes() | 以UTC为标准,返回分钟 |
getUTCSeconds() | 以UTC为标准,返回秒数 |
getUTCMilliseconds() | 以UTC为标准,返回毫秒 |
setFullYear() | 设置一个完整年份 |
setMonth() | 设置一个完整月份 |
setDate() | 设置所属月份中的第几天 |
setHours() | 设置小时数 |
setMinutes() | 设置分钟数 |
setSeconds() | 设置秒数 |
setMilliseconds() | 设置毫秒数 |
toDateString() | 返回英语描述的日期(不包括时分秒,例如 Wed Jul 28 1993) |
toLocaleString([locales [, options]]) | locales控制语言类型,例如"ko-KR",这个表示韩语,options按哪种标准,例如UTC,按照制定国家的语言展示日期指定标准的日期格式 |
toString() | 返回一个字符串,以本地的时区表示该 Date 对象,例如:Wed Sep 09 1998 05:36:22 GMT+0800 (中国标准时间) |
valueOf() | 返回自1970.1.1 00:00:00至今的毫秒值 |
咱只要记住下面几种时间格式
ISO时间格式:2022-12-08T03:27:26.857Z
时间戳(毫秒数):1640966400000
中国本地标准时间格式:Wed Sep 09 1998 05:36:22 GMT+0800