js获取指定日期的前一天

如何获取指定日期的前一天


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.000ZUTC通过标准时,我们是北京时区,北京时区是+8,所以2019-12-19T16:00:00.000Z指的就是北京时间的2019/12/20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值