在实际的业务操作中,我们前端开发通常都是接收后端的数据显示在界面上。而从后端传入的时间格式,通常有date对象和字符串对象两种。
需要进行时间处理转换等操作的,无非就是两种情况。
一:接收后端时间数据在前端存储(有可能后端传入的是String类型的时间,或者是date类型的时间,我们可以按照自己的需求在前端进行存储)
二:把前端存储的数据显示在界面上。
下面对这两中情况来进行讲解,我们在前端开发中经常会遇到的对时间的操作。通常也就下面两种类型转换用得比较多:
date->String如下:
//不足10的数据需要补0
addzero(str){
return str<10?'0'+str:str
}
//date->String 获取日期
getStringToDate(date){
return date.getFullYear()+'-'+this.addZero(date.getMonth()+1)+'-'+this.addZero(date.getDate())
}
//date->String 获取时间
getStringToTime(date){
return this.addZero(date.getHours())+':'+this.addZero(date.getMinutes())+':'+this.addZero(date.getSeconds())
}
String->date如下:
//方法1
let date = new Date(年,月,日,时,分,秒)//参数均为number类型,需要了解字符串切割的,可以看看其它文章
//方法2
//并不是很建议这种方法。因为parse对字符串的格式有要求,不能应对String格式的变化。
//某些格式String无法进行这种方法转换。
let time=Date.parse("时间的字符串")
let date=new Date(time)
另外还有一种需求:就算相对时间
就是获取到指定时间的date类型相对于多少天的时间对象,这里我看过很多文章,但是目前就发现一种方法比较简单。
比如我要获取到20220928一个月前的日期
getMyDate(){
//这里可以使用时间戳。以前对此不是没有研究,发现弄懂后,真的很简单。
let date = new Date()//构造函数为空,默认获取系统时间的date对象
//date.getTime()是获取到19700101到当前时间的毫秒数。等同于相对19700101,把时间对象转换成了一个number对象
//减去时间戳,30天对应的毫秒数。一天24h,一小时60min,一分钟60s,1秒就是1000ms。就可以得到对应的时间。
//先前以为需要写算法之类,还要判断闰年什么的,用这个找相对时间非常简单。
return new Date(date.getTime()-30*24*60*60*1000)
}