项目中需要对时间选择做出限制,只能选择当前日期前后几天
发现有问题,当月底时直接在getDate()函数加一天 会出现月底多一天的尴尬
出现问题
如当前时间:2020-03-31
var now = new Date();//创建时间对象
var today = now .getDate();//当天日期
var tomo = now.getDate()+1;//当天的后一天 日期
console.log(today);//31
console.log(tomo);//32
!!由此可见不能直接在getDate()后直接加一天
解决办法:
//用时间戳转日期
var now = new Date();
now = new Date(now.getTime());//时间戳转日期
var today = now .getDate();//当天日期
var tomo =new Date(now.getTime() + 86400000*1);//当天的后一天
var tomoday = tomo.getDate();//当前的后一天 日期
console.log(today);//31
console.log(tomoday);//1
举一反三:
当前时间前一天:
var now = new Date();
now = new Date(now.getTime());//时间戳转日期
var today = now .getDate();//当天日期
var yes =new Date(now.getTime() - 86400000*1);//当天的前一天
var yesterday = yes.getDate();//当前的前一天 日期
console.log(today);//31
console.log(yesterday);//30
封装函数:
/*
* Str string before/after 向前或向后推算
* Length int 向前后向后的天数
*/
function get_youwant_date(Str,Length){
var now = new Date();//创建时间对象
if(Str == 'before'){
var tomo = new Date(now.getTime() - 86400000 * Length);//向前指定天数
}else{
var tomo = new Date(now.getTime() + 86400000 * Length);//向后指定天数
}
var year = now.getFullYear(), month= (now.getMonth() + 1).toString(), day = now .getDate().toString();
//月份不足两位 补0
if (month.length == 1) {
month= '0' + month;
}
//日期不足两位 补0
if (day .length == 1) {
day = '0' + day ;
}
var newdate =(year+ '-' + month+ '-' + day );//输出指定日期格式
return newdate;
}
解决了项目中出现的问题,若对你有所帮助,那就更好了