关于时间的使用和转化,除了熟知new Date()可以获取当前时间和.getFullYear()等该Date对象的一系列方法之外,还需要熟记两个万能公式:
1.new Date(时间戳)可以创建一个Date对象;
const dateObj=new Date(1736238440474)
2.new Date(年,月,日,时,分,秒)也可以创建一个时间对象。
const dateObj=new Date(2025,1,7,16,28,50)
我们可以利用以下两个场景应用一下:
第一,我们经常会遇到下图这种,让我们在初始加载时给到开始时间和结束时间一个默认值:从昨天到今天。
我们就可以利用万能公式1:
const date=new Date()
// 输出结束时间,即今日:
form.value.endTime=date.getFullYear()+'-'+String(date.getMonth() + 1).padStart(2, '0')+'-'+String(date.getDate()).padStart(2, '0');
// 今日时间戳减去一天的时间戳为昨日时间戳:
const start=new Date(date.getTime()-1000*60*60*24)
// 输出开始时间,即昨日:
form.value.startTime=start.getFullYear()+'-'+String(start.getMonth() + 1).padStart(2, '0')+'-'+String(start.getDate()).padStart(2, '0');
其中String(date.getMonth() + 1).padStart(2, '0')是为了补充个位数字在十位上的字符串'0',相当于M < 10 ? '0' + M : M,只是更方便。
如果需求是一星期前到今天在减去的时间戳*7即可:
const start=new Date(date.getTime()-1000*60*60*24*7)
如果需求要求时分秒在字符串后拼接即可:
form.value.endTime=date.getFullYear()+'-'+String(date.getMonth() + 1).padStart(2, '0')+'-'+String(date.getDate()).padStart(2, '0')+' '+String(date.getHours()).padStart(2, '0')+':'+String(date.getMinutes()).padStart(2, '0')+':'+String(date.getSeconds()).padStart(2, '0')
// 或者:
form.value.endTime=date.getFullYear()+'-'+String(date.getMonth() + 1).padStart(2, '0')+'-'+String(date.getDate()).padStart(2, '0')+' 23:59:59'
form.value.startTime=start.getFullYear()+'-'+String(start.getMonth() + 1).padStart(2, '0')+'-'+String(start.getDate()).padStart(2, '0')+' 00:00:00'
第二,如果遇到要输出选择之后的日期相隔几天,则可以使用万能公式2:
//结束日期的时间戳减去开始日期的时间戳除以1000*60*60*24即为天数
dayNum.value=(new Date(...(form.value.endTime.split('-')),0,0,0).getTime()-new Date(...(form.value.startTime.split('-')),0,0,0).getTime())/1000/60/60/24
//其中...(form.value.endTime.split('-')为结束时间的年月日
利用好这两个万能公式就可以解决时间转化百分之九十的问题。
如果不想自己写也可以安装插件:Moment.js 中文网