Javascript比较两个日期有错误的结果

N

我试图学习更多有关JavaScript的知识,并决定制作一个倒计时计时器,该计时器将显示从数年一直到毫秒的时间。对我来说,这只是一个学习实验。

分钟不正确。如果刷新浏览器,秒和分钟总是从59开始。我认为这可能是因为我正在调用Date对象并可能将其重置。我正在寻找的是倒数某个日期。

因为这是我的学习实验,所以如果您发现其他可以改进的地方,请告诉我。

var dateA = new Date();
var dateB = new Date('June 3, 2014 00:27:00');
var cntr  = setInterval(clock, 10);

function clock()
{
  dateB = (dateB - 10);
  var date = new Date(dateB);
  var yrs  = Math.abs(date.getUTCFullYear() - dateA.getUTCFullYear() );
  var mos  = Math.abs(date.getUTCMonth() - dateA.getUTCMonth());
  var days = Math.abs(date.getUTCDate() - dateA.getUTCDate());
  var hrs  = Math.abs(date.getUTCHours() - dateA.getUTCHours());
  var mins = Math.abs(date.getUTCMinutes() - dateA.getUTCMinutes());
  var secs = Math.ceil(date.getUTCSeconds() - dateA.getUTCSeconds() / 60);
  var mill = Math.ceil(date.getUTCMilliseconds() - dateA.getUTCMilliseconds() / 999);
  var str  =
    yrs  + ' Years   '  +
    mos  + ' Months   ' +
    days + ' Days   '   +
    hrs  + ' Hours   '  +
    mins + ' Mins   '   +
    secs + ' Secs   '   +
    mill + ' Mill';
  document.getElementById('clock').innerHTML = str;
}
贝吉
var yrs  = Math.abs(date.getUTCFullYear() - dateA.getUTCFullYear() );
var mos  = Math.abs(date.getUTCMonth() - dateA.getUTCMonth());
var days = Math.abs(date.getUTCDate() - dateA.getUTCDate());
var hrs  = Math.abs(date.getUTCHours() - dateA.getUTCHours());
var mins = Math.abs(date.getUTCMinutes() - dateA.getUTCMinutes());

您不能只取日期各部分差异的绝对值!您最终得到完全错误的数字。

var secs = Math.ceil(date.getUTCSeconds() - dateA.getUTCSeconds() / 60);
var mill = Math.ceil(date.getUTCMilliseconds() - dateA.getUTCMilliseconds() / 999);

为什么将这些除以60,再除以近1000?

相反,要计算时差,您将需要获取完整的时差(通常以毫秒为单位)并将其转换为不同的单位。您的函数应如下所示:

var el = document.getElementById('clock');
function clock() {
  var diff = dateB - Date.now();
  var yrs  = Math.floor(diff / 31536000000);
  var mos  = Math.floor(diff / 2678400000) % 12;
  var days = Math.floor(diff / 86400000)   % 31;
  var hrs  = Math.floor(diff / 3600000)    % 24;
  var mins = Math.floor(diff / 60000)      % 60;
  var secs = Math.floor(diff / 1000)       % 60;
  var mill =            diff               % 1000;
  var str  =
    yrs  + ' Years   '  +
    mos  + ' Months   ' +
    days + ' Days   '   +
    hrs  + ' Hours   '  +
    mins + ' Mins   '   +
    secs + ' Secs   '   +
    mill + ' Mill';
  el.innerText = str;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript比较两个日期有错误的结果

来自分类Dev

比较两个日期结果0

来自分类Dev

比较两个日期结果0

来自分类Dev

比较JavaScript中的两个日期

来自分类Dev

比较两个日期并在android中获取结果

来自分类Dev

在 RecyclerView 中比较来自 JSON 结果的两个日期

来自分类Dev

两个日期比较

来自分类Dev

如何比较两个异步JavaScript函数的结果?

来自分类Dev

比较两个JavaScript字符串日期

来自分类Dev

如何在JavaScript中比较两个日期时间?

来自分类Dev

javascript比较两个日期并发出警报

来自分类Dev

比较Javascript中数组中的两个日期

来自分类Dev

Javascript比较两个日期以获得差异

来自分类Dev

在javascript中按天比较两个日期

来自分类Dev

比较两个错误

来自分类Dev

内连接两个带有日期结果的表

来自分类Dev

使用两个日期比较而不是日期范围查询会在MongoDB中产生不同的结果

来自分类Dev

比较Postgres中的两个结果

来自分类Dev

比较Postgres中的两个结果

来自分类Dev

比较R中的两个日期

来自分类Dev

比较两个日期范围

来自分类Dev

比较两个日期的提取年份

来自分类Dev

比较两个日期时出错

来自分类Dev

比较Smarty中的两个日期

来自分类Dev

比较使用datepicker的两个日期

来自分类Dev

比较两个日期angularjs

来自分类Dev

比较VueJs中的两个日期

来自分类Dev

比较两个日期时出错

来自分类Dev

angularjs比较两个日期