第十五节:时间对象Date

1、关于时间

GMT时间(格林尼治时间)
UTC时间(协调世界时间)
时间虽然没有起始值,但JS语言有起始时间,为1970年1月1日00点00分00秒

2、时间的创建(使用new操作符)

不传参:new Date(); //获取系统时间,系统时间一般不准确,准确时间一般是获取服务器时间
一个参数:new Date(毫秒数);需要创建的时间距离起止时间(1970年)相差的毫秒数
两个参数:nnew Date(yyyy,mth); 2个数字指定年份和月份
三个参数:new Date(yyyy,mth,dd); 3 个数字指定年、月和日
四个参数:new Date(yyyy,mth,dd,hh); 4个数字指定年、月、日和小时
五个参数:new Date(yyyy,mth,dd,hh,mm); 5个数字指定年、月、日、小时和分钟
六个参数:6个数字指定年、月、日、小时、分钟、秒;
七个参数:7个数字分别指定年、月、日、小时、分钟、秒和毫秒;
传参几种方式:
new Date(milliseconds);
new Date(year, month)
new Date(year, month, day)
new Date(year, month, day, hours)
new Date(year, month, day, hours, minutes)
new Date(year, month, day, hours, minutes, seconds)
new Date(“month dd,yyyy hh:mm:ss”); ——new Date(date string)
new Date(“month dd,yyyy”); ——new Date(date string)

//2021年12月1日,按照时分秒传参(月份0表示1月,11表示12月);按照string传参直接传递对应日期即可(2021年12月1日,即'2021,12,1')
//不传参
new Date();//Wed Dec 01 2021 08:54:29 GMT+0800 (China Standard Time)
//一个参数,今天距离JS起止时间(1970)的毫秒数
new Date(1638320169479);//Wed Dec 01 2021 08:56:09 GMT+0800 (China Standard Time)
//两个参数,年/月
new Date(2021,11); //Wed Dec 01 2021 00:00:00 GMT+0800 (China Standard Time)
//三个参数,年/月/日
new Date(2021,11,1); //Wed Dec 01 2021 00:00:00 GMT+0800 (China Standard Time)
//四个参数
new Date(2021,11,1,9); //Wed Dec 01 2021 09:00:00 GMT+0800 (China Standard Time)
//五个参数
new Date(2021,11,1,9,30); //Wed Dec 01 2021 09:30:00 GMT+0800 (China Standard Time)
//六个参数
new Date(2021,11,1,9,30,50); //Wed Dec 01 2021 09:30:50 GMT+0800 (China Standard Time)
//七个参数
new Date(2021,11,1,9,30,50,10); //Wed Dec 01 2021 09:30:50 GMT+0800 (China Standard Time)
//date string
new Date('2021,12,1');//Wed Dec 01 2021 00:00:00 GMT+0800 (China Standard Time)
new Date('12,1,2021');//Wed Dec 01 2021 00:00:00 GMT+0800 (China Standard Time)
new Date('Dec 1,2021');//Wed Dec 01 2021 00:00:00 GMT+0800 (China Standard Time)

备注:时间对象中除了天其他基本都是从0开始的,例如月份、星期、时、分、秒、毫秒等

3、传入其他参数(补充内容,基本开发不涉及)

//传入布尔值或者null,早晨八点是因为我们电脑一般设置的为北京时间(北京时间是中国采用国际时区东八时区的区时作为标准时间)
new Date(true);//Thu Jan 01 1970 08:00:00 GMT+0800 (China Standard Time)
new Date(null);//Thu Jan 01 1970 08:00:00 GMT+0800 (China Standard Time)
//传入undefined
new Date(undefined);//无效时间 Invalid Date
//传入字符串,会尽可能按照你传入内容转化为时间,如果不能转化则返回无效时间
new Date('2021-12-1'); //Wed Dec 01 2021 00:00:00 GMT+0800 (China Standard Time)
new Date('2021/12/1');//Wed Dec 01 2021 00:00:00 GMT+0800 (China Standard Time)
new Date('12-1-2021');//Wed Dec 01 2021 00:00:00 GMT+0800 (China Standard Time)
new Date('abc');//Invalid Date
new Date('2021-12-1 12:30');//Wed Dec 01 2021 12:30:00 GMT+0800 (China Standard Time)
new Date('12/1/2021,10:50');//Wed Dec 01 2021 10:50:00 GMT+0800 (China Standard Time)
new Date('2021-12-1-12-30');//Invalid Date
//一般情况将日期写前面,时间写后面;如果反过来,有些浏览器会出错
//当月份为个位数使用补0时,时间返回的不是00:00,而是8:00
new Date('2021-01-15');//Fri Jan 15 2021 08:00:00 GMT+0800 (China Standard Time)
new Date('2021-1-15'); //Fri Jan 15 2021 00:00:00 GMT+0800 (China Standard Time)

4、Date对象的方法

  • 继承方法
  • 格式化方法
  • 自身方法

① 基础方法
作为对象有三个基础方法:toString()、toLocalString()、valueOf()

//谷歌打印内容
new Date().toString();//'Thu Dec 02 2021 09:55:03 GMT+0800 (China Standard Time)'
new Date().toLocaleString();//'12/2/2021, 9:55:26 AM'
//火狐打印内容
new Date().toString();//"Thu Dec 02 2021 10:03:39 GMT+0800 (中国标准时间)"
new Date().toLocaleString();//"2021/12/2 上午10:03:41"
//valueOf()返回时间对象所对应的毫秒数
new Date().valueOf();//1638410725914
//转毫秒数小技巧
+new Date();//1638410821107

valueOf和‘+’区别:
++++++++++++++++++++++
ES5新增方法 Date.now(),Date.now() 返回自零日期(1970 年 1 月 1 日 00:00:00:00)以来的毫秒数,Date.now() 的返回与在 Date 对象上执行 getTime() 的结果相同。

Date.now(); //1638415172954
new Date().getTime(); //1638415186082

时间对象的比较

new Date(2021,11,30) > new Date(2021,12,1);//false

② 格式化方法
格式化方法:toTimeString()、toDateString()、toLocaleTimeString()、toLocaleDateString()、toUTCString() 、toGMTString()-已废弃
备注:前四个方法一般用于调试,正常开发基本用不到
toUTCString() :根据世界时,将 Date 对象转换为字符串

new Date().toUTCString();//'Thu, 02 Dec 2021 03:28:52 GMT'

常见用法:为 cookie 添加一个过期时间(以 UTC 或 GMT 时间)

//创建cookie并添加一个过期时间
document.cookie="username=John Doe; expires=Thu, 03 Dec 2021 03:28:52 GMT";

③ 自身方法
自身方法大致可以分为获取方法(get开头)和设置方法(set开头),共有33个方法,下面列举几个常用方法:

方法描述
getDate()返回月中的第几天(从 1 到 31)
getDay()返回星期几(0-6)
getFullYear()返回年份
getHours()返回小时(从 0-23)
getMilliseconds()返回毫秒(0-999)
getMinutes()返回分钟(从 0-59)
getMonth()返回月份(从 0-11)
getSeconds()返回秒数(从 0-59)
getTime()返回自 1970 年 1 月 1 日午夜以来与指定日期的毫秒数
setDate()设置 Date 对象中月的某一天
setFullYear()设置日期对象的年份
setHours()设置日期对象的小时
setMilliseconds()设置日期对象的毫秒数
setMinutes()设置日期对象的分钟数
setMonth()设置日期对象的月份
setSeconds()设置日期对象的秒数
setTime()将日期设置为 1970 年 1 月 1 日之后/之前的指定毫秒数。()

5、补充知识

将时间转换为毫秒数的几种方法:valueOf()、getTime()、Number()、一元操作符+号、parse()自身方法,其中parse()方法是效率最低的一个方法。
前四种方法速度最快的是valueOf()和getTime(),让后是一元+和Number();但是差别基本看不出来(如果程序中多次使用,或者要经过几万次的转换,建议使用前两个,如果想要省事快速可以使用一元加操作符)
Date对象方法参考

备注:本内容学习总结来源于喜马拉雅冰山工作室沙翼老师主讲的(陪你读书(JavaScript WEB前端))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值