鍍金池/ 問答/HTML5  HTML/ js寫出以下倒計(jì)時(shí):當(dāng)天時(shí)間倒計(jì)時(shí)到次日10點(diǎn),次日之后每到0點(diǎn)開始倒計(jì)時(shí)到第二

js寫出以下倒計(jì)時(shí):當(dāng)天時(shí)間倒計(jì)時(shí)到次日10點(diǎn),次日之后每到0點(diǎn)開始倒計(jì)時(shí)到第二天的十點(diǎn)

小弟js比較弱,只能寫出當(dāng)前時(shí)間到給定時(shí)間的倒計(jì)時(shí),求大牛解答,必將好好學(xué)習(xí)研究,謝謝。

回答
編輯回答
維他命

好似寫的有點(diǎn)復(fù)雜。把倒計(jì)時(shí)時(shí)間,重置時(shí)間,計(jì)時(shí)器的偏差都加上了。

var s = 1000,
    m = 60 * s,
    h = 60 * m,
    d = 24 * h,
    tick_time = 1000,
    timezone = new Date().getTimezoneOffset() * m;

var getDayTime = function(t) {
  t = t.split(':');
  return t[0] * h + t[1] * m;
}

var getNextClock = function(clockTime, resetTime, now) {
  var result = now_d = parseInt(now / d, 10) * d + timezone;
  now_d_t = now - now_d;
  if (now_d_t > resetTime) {
    result += d;
  }
  return result + clockTime;
};

var before = 0,
  resetTime = getDayTime('00:00'),
  clock24 = getDayTime('10:00');

var tickHandler = function() {
  var now = Date.now();
  if (now - before > tick_time) {
    var nextClock = getNextClock(clock24, resetTime, now);
    var diff = nextClock - now;
    var floor = Math.floor;
    var diif_readable = [
      floor(diff / d),
      floor((diff % d) / h),
      floor((diff % h) / m),
      floor((diff % m) / s)
    ];
    console.log(diif_readable);
    before = now;
  }
};
var handler = setInterval(tickHandler, tick_time/10);
tickHandler();
2017年10月4日 13:07
編輯回答
壞脾滊

思路:(次日10點(diǎn)的時(shí)間戳-當(dāng)天時(shí)間時(shí)間戳)等于 0結(jié)束;
(第二天10點(diǎn)時(shí)間戳-當(dāng)天時(shí)間0點(diǎn)時(shí)間戳)等于0結(jié)束。

2018年9月11日 10:42
編輯回答
孤毒
let now = Date.now();
let result = '';
let deadline = 10;
setInterval(() => {
    const ten = new Date();
    if(new Date(now).getHours() > deadline) {
        ten.setDate(new Date(now).getDate() + 1);
    }
    ten.setHours(deadline);
    ten.setMinutes(0);
    ten.setSeconds(0);
    const interval = Math.ceil(ten.valueOf() - new Date(now).valueOf()) / 1000;
    const hour = Math.floor(interval / 3600);
    const minutes = Math.floor((interval % 3600) / 60);
    const second = Math.floor(interval % 60);
    result = hour + ' : ' + minutes + ' : ' + second;
    now = Date.now();
    console.log(result)
}, 1000);

效果:https://codepen.io/xiaoyi_122...

2017年12月29日 15:10