- 背景
点击表单提交的时候,将提交表单的当前时间和表单自身用户设置的截止时间进行比较。如果当前日期≥「截止日期」,则审核通过,否则不能通过;本质上就是比较时间大小。
比较的时候还要看是否精确到毫秒 - 时间戳进行日期大小比较
-如果有这种情况,建议使用时间戳来比较大小,比如2021.01.01和2021.01.01,这种当天的比较,当前日期是一月一日,截止日期也是一月一日,这样比较时间=就是成立的,而用时间戳每次获取的当前时间都是不同的,及时都是一月一日也是无法成立相等条件
1.获取当前时间
//当前时间的字符串形式
let currentTime = Date.parse(new Date()) / 1000;
2.将当前时间转换为时间戳
//Method是封装的日期字符串和时间戳转换方法 放在文章最后
currentTime = Method.formatDate(currentTime, 'date');
3.和截止日期进行比较 我这里的截止日期是后端直接返回的时间戳格式,不用做处理
if (endTime <= currentTime) {
// console.log('通过');
} else {
// console.log('no');
}
- 字符串日期比较大小
//当前时间的字符串形式
let curTime = Date.parse(new Date()) / 1000;//不算毫秒
//截止日期
let tempTime = "2021-02-19";
//比较大小
let result = Date.parse(curTime.trim().replace(/-/g, '/')) >= Date.parse(tempTime.trim().replace(/-/g, '/'));
if (result) { console.log('通过') }
else { console.log('提示') }
–比较方法在网上学的,年前做的找不到链接了,可以直接看效果
- 日期转换方法 公司大佬封装的方法
export default {
/*
* 时间戳转成日期时间格式
* @params time 传入时间戳,必需
* @params rules 转换规则,返回格式配置,默认返回date格式
*/
formatDate(time, rules) {
if (!time) {
return;
}
var result = "";
if (typeof time === "string" || typeof time === "number") {
time = new Date(time * 1000);
var year = time.getFullYear();
var month = (time.getMonth()+1) > 9 ? (time.getMonth()+1) : "0" + (time.getMonth()+1);
var date = time.getDate() > 9 ? time.getDate() : "0" + time.getDate();
var hour = time.getHours();
var minute = time.getMinutes();
var second = time.getSeconds();
if (rules) {
switch (rules) {
case 'datetime':
result = year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
break;
case 'date':
result = year + '-' + month + '-' + date;
break;
}
} else {
result = year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
}
}
return result;
},
/*
* 将日期格式转成时间戳格式
* @params time 传入时间戳,必需
* @params exact 是否精确到毫秒,默认为false
*/
formatUnixTime(time, exact) {
if (!time) {
return;
}
var result = Date.parse(new Date(time));
if (exact !== true) {
result = result / 1000;
}
return result;
}
}