这是我参与更文挑战的第20天,活动详情查看: 更文挑战
在之前的一篇文章中,我们说了JavaScript的数据额类型,分为基本数据类型和复杂数据类型(引用类型),今天我们就来讲一讲引用类型中的Date和它的扩展知识。
Date
在任何语言中,时间的操作都是必不可少的,而在js中,时间的类型就是Date。相信大家都有一定的js基础,这里就不废话了,直接总结用法。
new Date的使用
let time = new Date()
console.log(time) // Mon Jun 21 2021 22:42:19 GMT+0800 (中国标准时间)
复制代码
new Date 最简单的用法就是向上面那样子,不传入任何参数,会返回当前的时间对象。如果我们想获取其他的时间对象,则可以给它传入参数。
比如想要的时间的时间戳
let time = new Date(1624286539779)
console.log(time) // Mon Jun 21 2021 22:42:19 GMT+0800 (中国标准时间)
复制代码
除了接收时间戳,它还可以接收表示时间格式的字符串。例如我们常用的时间格式2021-06-21 22:48:00
let time = new Date('2021-06-21 22:48:00')
console.log(time) // Mon Jun 21 2021 22:48:00 GMT+0800 (中国标准时间)
复制代码
除了上面所展示的中国人常用的时间格式,Date方法还支持其他的字符格式。
- ”月/日/年“,如 “5/23/2019”;
- “月名 日,年”,如”May 23,2019″;
- 周几 月名 日 年 时:分:秒 时区”,如 “Tue May 23 2019 00:00:00 GMTF-0700”;
- ISO 8601扩展格式“YYY- MM-DDTHH:mm:ss.sss”,如2019-05-23T00:00:00(只适用于兼容ES5的实现)。
需要注意的是,苹果的safari浏览器可能对部分用法存在兼容问题。
// chrome
let time = new Date('2021-06-21 22:48:00')
console.log(time) // Mon Jun 21 2021 22:48:00 GMT+0800 (中国标准时间)
// safari
let time = new Date('2021-06-21 22:48:00')
console.log(time) // [Log] Invalid Date
复制代码
至于苹果为什么不支持这种写法我是不知道,如果有知道的可以评论一下,至于如何解决,只要把时间中的横线都换成斜线就行了。
// safari
let time = new Date('2021/06/21 22:48:00')
console.log(time) // Mon Jun 21 2021 22:48:00 GMT+0800 (CST)
复制代码
这个bug我当初找好久才找到……
toLocaleString
toLocaleString()方法返回与浏览器运行本地环境一致的时间和日期
let time = new Date()
time.toLocaleString() // "2021/6/21下午11:16:23"
time.toLocaleString('chinese', { hour12: false }) // "2021/6/21 23:40:56"
复制代码
toString()
toString()方法返回的是带时区的,并且是24小时制的,和我们直接new Date()展示的一样
new Date().toString() // "Mon Jun 21 2021 23:21:37 GMT+0800 (中国标准时间)"
复制代码
格式化类的方法
let time = new Date()
time.toDateString() // "Mon Jun 21 2021"
time.toTimeString() // "23:26:28 GMT+0800 (中国标准时间)"
time.toLocaleDateString() // "2021/6/21"
time.toLocaleTimeString() // "下午11:28:47"
time.toUTCString() // "Mon, 21 Jun 2021 15:28:47 GMT"
复制代码
需要注意的是,以上方法和 toLocaleString()和 toString()一样,会因浏览器 而异。因此不能用于在用户界面上一致地显示日期。所以各位小伙伴用之前尽量现在自己要兼容的浏览器上试一下哦,如果能符合自己要求,总比用那一大串的get……什么的方便吧。
最经典的获取时间的那些方法来啦。
// 获取当前日期时间
var myDate = new Date();
myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-????)
myDate.getMonth(); //获取当前月份(0-11,0代表1月)
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)**
复制代码
顺便把那个获取当前时间的函数也贴上来吧。
function current() {
var d = new Date(),
str = '';
str += d.getFullYear() + '年'; //获取当前年份
str += d.getMonth() + 1 + '月'; //获取当前月份(0——11)
str += d.getDate() + '日';
str += d.getHours() + '时';
str += d.getMinutes() + '分';
str += d.getSeconds() + '秒';
return str;
}
复制代码
愉快的一天又结束了,祝大家有个好梦,晚安。
对了,我参加了年中征文活动,希望大家可以点个赞,评论一下






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)