JavaScript:内置对象Date的使用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值