- 如果new Date("2016/06/17, 18:47:52") 是这样的话就会只出现小时并且报countdown.js:53 Uncaught TypeError: Cannot read property 'length' of undefined 要是new Date(2016,6,17,22,47,52)这样的话,就会都是0,而且不报错,这是怎么回事 当前时间为​2016,7,16 20:18 麻烦大家了 -

来源:3-3 倒计时的时间计算

泽泽222

2016-07-16 20:20

var WINDOW_WIDTH = 1024;

var WINDOW_HEIGHT = 768;

var RADIUS = 8;

var MARGIN_TOP = 60;

var MARGIN_LEFT = 30;


const endTime = new Date("2016/06/17, 18:47:52");

 var curShowTimeSeconds = 0;


window.onload = function () {


  var canvas = document.getElementById('canvas');

  var context = canvas.getContext("2d");


  canvas.width = WINDOW_WIDTH;

  canvas.height = WINDOW_HEIGHT;


  curShowTimeSeconds = getCurrentShowTimeSeconds();


  render(context);

}


function getCurrentShowTimeSeconds() {

  var curTime = new Date();

  var ret = curTime.getTime() - endTime.getTime();

  ret = Math.round(ret / 1000);


  return ret >= 0 ? ret : 0;

}




function render(cxt) {


  var hours = parseInt(curShowTimeSeconds / 3600);

  var minutes = parseInt((curShowTimeSeconds - hours*3600 )/ 60);

  var seconds = curShowTimeSeconds % 60;


  renderDigit(MARGIN_LEFT, MARGIN_TOP, parseInt(hours / 10), cxt)

  renderDigit(MARGIN_LEFT + 15 * (RADIUS + 1), MARGIN_TOP, parseInt(hours % 10), cxt)

  renderDigit(MARGIN_LEFT + 30 * (RADIUS + 1), MARGIN_TOP, 10, cxt)

  renderDigit(MARGIN_LEFT + 39 * (RADIUS + 1), MARGIN_TOP, parseInt(minutes / 10), cxt);

  renderDigit(MARGIN_LEFT + 54 * (RADIUS + 1), MARGIN_TOP, parseInt(minutes % 10), cxt);

  renderDigit(MARGIN_LEFT + 69 * (RADIUS + 1), MARGIN_TOP, 10, cxt);

  renderDigit(MARGIN_LEFT + 78 * (RADIUS + 1), MARGIN_TOP, parseInt(seconds / 10), cxt);

  renderDigit(MARGIN_LEFT + 93 * (RADIUS + 1), MARGIN_TOP, parseInt(seconds % 10), cxt);

}


function renderDigit(x, y, num, cxt) {


  cxt.fillStyle = "rgb(0,102,153)";


  for (var i = 0; i < digit[num].length; i++)

    for (var j = 0; j < digit[num][i].length; j++)

      if (digit[num][i][j] == 1) {

        cxt.beginPath();

        cxt.arc(x + j * 2 * (RADIUS + 1) + (RADIUS + 1), y + i * 2 * (RADIUS + 1) + (RADIUS + 1), RADIUS, 0, 2 * Math.PI)

        cxt.closePath()


        cxt.fill()

      }

}

哪里有问题么

写回答 关注

3回答

  • eaglegood
    2016-07-16 21:54:24
    已采纳

    var ret = endTime.getTime() - curTime.getTime();你好像写反了

    泽泽222

    真的是这样,谢谢啦,我曾经也试过用end - cur,可能是因为但是日期没写好结果也报了错

    2016-07-20 19:40:34

    共 1 条回复 >

  • 慕粉3120903
    2019-06-06 09:45:20

    我的也是全是0  这个怎么解决呢

  • 泽泽222
    2016-07-20 19:42:33

    谷歌浏览器的话还是写成new Date(2016,6,22,22,47,52)这样比较好,如果是new Date("2016/06/22, 18:47:52")的话,显示的都是0


    慕粉0302...

    我用谷歌浏览器写成new Date(2017,6,22,22,47,52);还是全部为0这是怎么回事呢??

    2017-09-30 17:50:13

    共 1 条回复 >

炫丽的倒计时效果Canvas绘图与动画基础

学习HTML5中最激动人心的技术Canvas,彻底释放自己的创造力

96746 学习 · 1000 问题

查看课程

相似问题