【js】JavaScript字符串转换成date时间类型
一、 Date()
const str = '2022-06-15';
const date = new Date(str);
console.log(date.getFullYear()); // 2022
console.log(date.getMonth()); // 5,这里月份范围是0-11,因此需要减一
console.log(date.getDate()); // 15
console.log(date); // 2022-06-15T00:00:00.000Z
如果传递了一个字符串,则 Date() 构造函数根据字符串中的信息创建一个 Date 对象。
如果传递的字符串格式错误或不受支持,则会抛出错误或创建无效日期,具体取决于实现。 例如
const invalidDate = new Date('a');
console.log(invalidDate); // Invalid Date
const invalidDate2 = new Date('15/6/2022');
console.log(invalidDate2); // Invalid Date
还可以通过 年月日+时分秒+毫秒 构造一个date。 注意月份的范围是0-11 。
var d = new Date(2023,1,31,23,59,59,999);//Tue Jan 31 2022 23:59:59 GMT+0800
var year = d.getFullYear();//2023
var month = d.getMonth();//0
var day = d.getDate();//31
var hours = d.getHours();//23
var minutes = d.getMinutes();//59
var seconds = d.getSeconds();//59
var mills = d.getMilliseconds();//999
语法总结
new Date(); //无输入参数时,取当前时间
new Date(value);//出入毫秒数
new Date(dateString);//Unix支持的时间戳字符串
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
但是,Date()构造函数,以及Date.parse()方法在不同浏览器上存在兼容问题,因此不推荐使用 。通用的格式是 ISO8601 标准,好像yyyy/MM/dd hh:mm:ss也可以,想用的人可以研究下,最保险的方法是用 new Date(year,month-1,seconds)。
具体可参考 Date - JavaScript | MDN
二、dayjs
Moment.js是Node.js和Vanilla JavaScript(使其与浏览器兼容)的最古老,最知名的日期相关库之一,非常经典。DayJS试图成为Moment.js的缩小版,Moment.js完整压缩文件的总重量为67,9Kb,而DayJS压缩文件的大小仅为2Kb。太疯狂了,但是他们支持国际化,插件和其他所有功能。
调用
dayjs#toDate
从 Day.js 对象中获取原生的 Date 对象,目前常用格式没有发现转换异常的
dayjs('2019-01-25').toDate()
typeof(dayjs()); //Object
typeof(dayjs().toDate());//Object
typeof(Date());//String
但通过typeof比较类型,却发现并不一致。
但很多情况下用dayjs()就可以处理很多事,不用转成Date
比如 返回指定单位下两个日期时间之间的差异:
const date1 = dayjs('2019-01-25')
const date2 = dayjs('2018-06-05')