如何获取指定日期的前一天
const getYesterday = (date) => {
const trueDate = date.getDate(); //获取输入日期的 日
const trueMonth = date.getMonth()+1; //获取输入日期的 月 ps:+1是因为月是从0开始的,所以真实的月份需要+1
const trueYear = date.getFullYear(); //获取输入日期的 年
var dateString =''; //定义一个字符串,用户存放字符串形式的日期
if(trueDate!==1){ //如果指定日期的‘日’不是1号,年、月不变,日减一即可
dateString = trueYear+'/'+trueMonth+'/'+(trueDate-1);
}else if(trueMonth==5||trueMonth==7||trueMonth==10||trueMonth==12){
//如果‘日’是1号,就判断指定日期所在月分,5,7,10,12这几个月的前一个月都是30天,只需月减一,日设置为30即可
dateString = trueYear+'/'+(trueMonth-1)+'/'+ 30;
}else if(trueMonth==2||trueMonth==4||trueMonth==6||trueMonth==8||trueMonth==9||trueMonth==11){
//如果是2,4,6,8,9,11这几个月的前一个月是31天,只需月减一,日设置为31即可
dateString = trueYear+'/'+(trueMonth-1)+'/'+ 31;
}else if(trueMonth==1){
//如果是一月一号的话,年减一,月日设置为12/31
dateString = (trueYear-1)+'/'+12+'/'+ 31;
}else if(trueMonth==3){
//如果是三月一号的话,就要判断年份是否闰年
if(trueYear%4==0&&trueYear%100!=0||trueYear%400==0){
dateString = trueYear+'/'+2+'/'+29
}else{
dateString = trueYear+'/'+2+'/'+28
}
}
console.log(dateString);
return new Date(dateString);
}
const today = new Date();
console.log(getYesterday(today));
运行的结果是:
2019/12/20
2019-12-19T16:00:00.000Z
可以发现dataString
的结果2019/12/20是正确的,但是,日期却是:
2019-12-19T16:00:00.000Z
这是因为时间格式的问题,这个2019-12-19T16:00:00.000Z
是UTC
通过标准时,我们是北京时区,北京时区是+8,所以2019-12-19T16:00:00.000Z
指的就是北京时间的2019/12/20