这几天制作项目的时候,需要获取当前时间与接口返回的表演时间段做对比并提示用户。
本以为信手拈来,遇到了个小坑,特此铭记!
接口数据形式是这样式儿的。
那么问题就来了:在网上查看资料,根据大佬的一篇文章发现,new Date()方法所传递的参数是有规格限制的:JavaScript中new Date()参数问题 @逐鱼https://blog.csdn.net/Aiyining/article/details/87925443就是因为对这些参数规格之前了解的不够深刻,导致本来流畅愉悦的敲代码环节小小地卡顿了一下~~痛恨知识浅薄的自己~~
new Date() 支持的五种格式我就以汉字形式表述了,以防下次遇到再次卡顿...
1.new Date(“月 日,年 小时:分钟:秒”)
2.new Date("月 日,年")
3.new Date("年,月,日,小时,分钟,秒")
4.new Date("年,月,日")
5.new Date("ms") (PS:这个ms的描述太过详细,想了解的大佬请参考上面链接文章哦~)
常用的就是这五种格式,再对比一下我接收到的数据...明摆坑爹啊!(磨刀霍霍向后台)
所以需要一些小变动
var date = new Date();
var year = date.getFullYear(); //获取当前年份
var mon = date.getMonth() + 1; //获取当前月份
var da = date.getDate(); //获取当前日
let nyr = year + "-" + mon + "-" + da
//var day = date.getDay(); //获取当前星期几
var h = date.getHours(); //获取小时
if(h < 10){
h = '0' + h;
};
var m = date.getMinutes(); //获取分钟
if(m < 10){
m = '0' + m;
}
var s = date.getSeconds(); //获取秒
let str = year + '-' + mon + '-' + da + ' ' + h + ':' + m + ':' + s;
获取到当前时间,将其转换成(年-月-日 小时:分钟:秒)的格式(这里的if判断是要将不足两位数的小时和分钟前面加上个零)
//比较时间
function MyFormatTime(str) {
var year = str.split('-')[0];
var month = str.split('-')[1];
var date = str.split('-')[2].split(' ')[0];
var h = str.split('-')[2].split(' ')[1].split(':')[0];
var m = str.split('-')[2].split(' ')[1].split(':')[1];
var s = str.split('-')[2].split(' ')[1].split(':')[2];
return new Date(year, month, date, h, m, s);
}
再声明一段函数,去操控分割所得到的当前时间
var nowTime = MyFormatTime(str);
将之前得到的赋给自己设置的变量,即可实现时间比较!
文章仅限参考,如有错误,请各位大佬及时指正或补充。在此拜谢!