如果我们点击获取的是没有格式化后的时间,这时候我们需要将时间格式化一下,比如Fri Oct 01 2021 08:00:00 GMT+0800 (中国标准时间)这种的格式,可以转化为yyyy-mm-dd hh:mm:ss的格式
formatDateTime(date) {
if (date == "" || !date) {
return "";
}
var date = new Date(date);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
h = h < 10 ? ('0' + h) : h;
var minute = date.getMinutes();
minute = minute < 10 ? ('0' + minute) : minute;
var second = date.getSeconds();
second = second < 10 ? ('0' + second) : second;
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
},
获取当前的时间
Vue.prototype.currentTime = function(){
var time = new Date();
var Y = time.getFullYear();
var M = time.getMonth();
M = (M+1) < 10 ? '0' + (M+1) : (M+1); //这里月份加1的原因是因为月份是从0开始的,0-11月,加1让月份从1-12月区间。
var d = time.getDate();
d = d < 10 ? '0' + d : d;
var h = time.getHours();
h = h < 10 ? '0' + h : h;
var m = time.getMinutes();
m = m < 10 ? '0' + m : m;
var s = time.getSeconds();
s = m < 10 ? '0' + m : m;
return Y+"-"+M+"-"+d+" "+ h + ":" + m + ":" + s;
}
获取当天的零时和当天现在的时间推迟一个小时(推迟几个小时都可,场景而定)
let date1 = new Date(new Date().toLocaleDateString()); //返回当前的返回一个表示该日期对象日期部分的字符串,例如:2021/8/20
console.log('本日开始的时间戳tolocal',new Date().toLocaleDateString())
console.log('本日开始的时间戳',date1)
// let date2 = new Date(new Date());
let date2 = new Date(new Date().getTime() - 1 * 60 * 60 * 1000); //getTime()获取现在到1970年1月1日的毫秒数,并提前1个小时(1 * 60 * 60 * 1000)
console.log('new Date().getTime()',new Date().getTime())
console.log('new Date().getTime() - 1 * 60 * 60 * 1000',new Date().getTime() - 1 * 60 * 60 * 1000)
console.log('本日结束的时间戳',date2)
//new Date()方法返回当日的日期和时间,但是返回的是中国标准时间,我们需要进行格式化中国标准时间,返回的例如是这样的Fri Aug 20 2021 00:00:00 GMT+0800 (中国标准时间)
this.ruleForm.startTime = this.formatDateTime(date1)
this.ruleForm.endTime = this.formatDateTime(date2)
//格式化时间
formatDateTime(date) {
if (date == "" || !date) {
return "";
}
var date = new Date(date);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
h = h < 10 ? ('0' + h) : h;
var minute = date.getMinutes();
minute = minute < 10 ? ('0' + minute) : minute;
var second = date.getSeconds();
second = second < 10 ? ('0' + second) : second;
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
},
获取本周的第一天的零时和本周现在的时间推迟一个小时(推迟几个小时都可,场景而定)
var nowDayOfWeek = now.getDay(); // 今天本周的第几天
var nowDay = now.getDate(); // 当前日
var day = nowDayOfWeek || 7;
console.log('day',day) //返回的这周是星期几
console.log('nowDay',nowDay) //当前日20
this.ruleForm.startTime = this.formatDateTime(new Date(now.getFullYear(), nowMonth, nowDay + 1 - day)); //将当年、当月、和当周的第一天放在new Date()方法格式化
console.log('本周开始的时间',new Date(now.getFullYear(), nowMonth, nowDay + 1 - day))
console.log('本周开始的时间戳',this.ruleForm.startTime)
// this.ruleForm.endTime = this.formatDateTime(new Date(new Date()))
this.ruleForm.endTime = this.formatDateTime(new Date(new Date().getTime() - 1 * 60 * 60 * 1000)) //获取当天的时间,提前一个小时
console.log('本周结束的时间戳',this.ruleForm.endTime)在这里插入代码片
解析:new Date()中是可以传递形参的,并且为了尽可兼容所有浏览器形参的格式是有要求的
可以识别
new Date('2014-10-01')
new Date('2014/10/01')
new Date('2014,10,01') //返回的都是中国标准的时间
获取本月的第一天的零时和本月现在的时间推迟一个小时(推迟几个小时都可,场景而定)
var nowMonth = now.getMonth(); // 当前月
var nowYear = now.getYear(); // 当前年
var monthStartDate = new Date(nowYear, nowMonth, 1);
this.ruleForm.startTime = this.formatDateTime(monthStartDate);
console.log('本月开始的时间戳',this.ruleForm.startTime)
// this.ruleForm.endTime = this.formatDateTime(new Date(new Date()))
this.ruleForm.endTime = this.formatDateTime(new Date(new Date().getTime() - 1 * 60 * 60 * 1000))
console.log('本月结束的时间戳',this.ruleForm.endTime)
获取当天的零时和当天现在的时间
function getToday(type, dates) {
var now = new Date()
var nowTime = now.getTime()
var day = now.getDay()
var hour = now.getHours()
var minute = now.getMinutes()
var ss = now.getSeconds()
var longTime = 24 * 60 * 60 * 1000 //一天的毫秒数
var n = longTime * 24 * 0
if (type == 's') {
var dd =
nowTime - n - hour * 60 * 60 * 1000 - minute * 60 * 1000 - ss * 1000 //获取今日零时
}
if (type == 'e') {
var dd = nowTime //获取当前的时间
}
function p(s) {
return s < 10 ? '0' + s : s
}
dd = new Date(dd)
var y = dd.getFullYear()
var m = dd.getMonth() + 1
var d = dd.getDate()
var hh = dd.getHours()
var mm = dd.getMinutes()
var ss = dd.getSeconds()
var day =
y + '-' + p(m) + '-' + p(d) + ' ' + p(hh) + ':' + p(mm) + ':' + p(ss)
return day
}
//调用本日时间
console.log(getToday('s')) //2021-07-29 00:00:00
console.log(getToday('e')) //2021-07-29 11:28:59
获取本周的周一到周日本周的时间
function getMonday(type, dates) {
var now = new Date()
var nowTime = now.getTime()
var day = now.getDay()
day = day === 0 ? 7 : day
var longTime = 24 * 60 * 60 * 1000
var n = longTime * 7 * (dates || 0)
if (type == 's') {
var dd = nowTime - (day - 1) * longTime + n
}
if (type == 'e') {
var dd = nowTime + (7 - day) * longTime + n
}
function p(s) {
return s < 10 ? '0' + s : s
}
dd = new Date(dd)
var y = dd.getFullYear()
var m = dd.getMonth() + 1
var d = dd.getDate()
var day = y + '-' + p(m) + '-' + p(d)
return day
}
console.log(getMonday('s')) //2021-07-26
console.log(getMonday('e')) //2021-08-01