0
data() {
    return {
      newCurrentTime: '',
      newTimer :null,
    };
  },
methods:{
    this.$post("date001", {}).then(res => {
         let data = res.data.body;
         //当前地区时间
         this.newCurrentTime = data.currentTime;
         //固定开始时间
         let timestamp = data.endTime;
         this.newTimer = setInterval(() => {
            this.newCurrentTime -= 1000;
            //开始时间-当前时间
            let newDayTime = timestamp - this.newCurrentTime;
            if (newDayTime > 1000) {
              //时间戳转时分秒
              var newHour = addZero(Math.floor(newDayTime / Hours)),
              newMinute = addZero(Math.floor((newDayTime % Hours) / Minutes)),
              newSecond = addZero(Math.floor(((newDayTime % Hours) % Minutes) / Seconds));
              if (hour == "00") {
                 this.content = newMinute + "分钟后开始" + newSecond;
               }
              //补零函数
              function addZero(num) {
                return num < 10 ? "0" + num : "" + num;
              }
             }, 1000);
         });
}

timestamp 和 this.newCurrentTime 都console 出来了 确实 timestamp > this.newCurrentTime
并且 this.newCurrentTime 每一秒减少1000
但是 timestamp - this.newCurrentTime 的时候 1秒+1000 这是为啥 都是时间戳

wswhy3 78
2019-07-14 提问
1 个回答
0

已采纳

这个计算和输出没问题吧
首先 timestamp 和 this.newCurrentTime 都是时间戳对吧.也就是他们都是一串数字; 然后你首先 让this.newCurrentTime -= 1000; 也就是假如一开始this.newCurrentTime 是5000; timestamp 是10000; 执行到这儿的时候this.newCurrentTime 变成4000了; 然后 let newDayTime = timestamp - this.newCurrentTime; 这个时候newDayTime 就是6000; 然后第二秒执行: 这个时候timestamp 没有变;但是此时的this.newCurrentTime 已经是3000了;所以newDayTime 就是10000 - 3000 = 7000; 就加1000; 这个没问题;

你的逻辑可能是他是不应该加1000的. 因为你是在定时器之外给 this.newCurrentTime = data.currentTime; 赋值的;
定时器在之后执行的时候;this.newCurrentTime的值是不变的; 定时器每秒减掉1000; 所以this.newCurrentTime就越来越小; 这样你应该明白了;

撰写答案

推广链接