【青山学js】基本引用类型之Date及相关知识扩展

这是我参与更文挑战的第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;
}
复制代码

愉快的一天又结束了,祝大家有个好梦,晚安。

对了,我参加了年中征文活动,希望大家可以点个赞,评论一下

乘风破浪会有时,直挂云帆济沧海|2021 年中总结

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享