这就是我编写的代码,它似乎可以正常工作。

window.onload = function() {
   var currentSpan = document.getElementById('current');

   var minute = 60000,
       hour = minute * 60,
       day = hour * 24,
       week = day * 7,
       month = week * 4,
       year = day * 365;
       var start = new Date(2009, 6, 1);

   setInterval(function() {

       var now = new Date();



       var difference = now - start;


       var years = Math.floor(difference / year),
           months = Math.floor((difference - (years * year)) / month),
           weeks = Math.floor((difference - (months * month + years * year)) / week),
           days = Math.floor((difference - (weeks * week + months * month + years * year)) / day);



   currentSpan.innerHTML = 'Since has passed: ' + years + ' years, ' + months + ' months, ' + weeks + ' weeks and ' + days + ' days';

   }, 500);

};

这似乎可以很好地更新我的跨度,并且所有数字看起来都是正确的。

但是 ,代码看起来很难看。 我真的需要像这样设置人造常量,然后执行所有数学运算来计算所需的内容吗?

自从我处理Date对象以来已经有一段Date

这是最好的方法吗?

#1楼 票数:4 已采纳

您可以将这些常量放入数组中,然后对其进行迭代:

function tdiff(utc) {
  var diff = new Date() - new Date(utc);
  var units = [
    1000 * 60 * 60 * 24 * 365,
    1000 * 60 * 60 * 24 * 28,
    1000 * 60 * 60 * 24 * 7,
    1000 * 60 * 60 * 24,
    1000 * 60 * 60,
    1000 * 60,
    1000
  ];

  var rv = [];
  for (var i = 0; i < units.length; ++i) {
    rv.push(Math.floor(diff / units[i]));
    diff = diff % units[i];
  }
  return rv;
}

当然,由于几个月和几年的长度并不总是相同的,所以这并不是那么准确,但是我想你会意识到的:-)

另请参见: http : //timeago.yarp.com/这很酷

#2楼 票数:0

您不必设置任何常数,但是如果您需要所有这些数字(年,月,日,小时等),则我不知道可以采用其他任何方式。

  ask by alex translate from so

未解决问题?本站智能推荐:

1回复

Javascript 添加天、周或月到今天的日期

我有一段代码可以清理浏览器的本地存储。 我想要的是根据参数设置删除一些键。 一个例子: 这个应该做的是在每个月的第一天删除localstorage。 另一个例子是当您填写 5、2、周时。 然后它应该每两周的第 5 天删除一次 localstorage。 现在的主要问题是将不同的时间段添加到今天的日
2回复

为什么JavaScript中的getDay()返回一周的+1天?

今天是2016年5月7日,星期六,但是当我实施js练习时,getDay()总是返回正确的数字加一个。 所以我做了这个测试。 今天是星期六,所以我希望返回5而不是6。
5回复

Javascript - 如何为一周中的每一天显示新的照片和文本

我正在做一个小的 Javascript 项目来显示星期几。 我把那部分记下来了,但我也想有一张照片来代表一周中的每一天。 有没有办法在数组项中同时使用文本和照片? 我已经搜索了一段时间,我能找到的唯一示例是获取一个随机照片应用程序,这不是我需要的。 我的一天追踪器项目
1回复

如何获得使用NodeJS给出的两个特定日期之间的天,周和月?

我正在使用NodeJS作为后端和AngularJS作为前端的贷款管理系统。 简而言之,这就是我需要做的。 系统中有3个类别。 每日贷款 每周贷款 每月贷款 贷款金额为$5000 ,这是Weekly loan 。 这意味着客户需要每周偿还这笔贷款。
5回复

如何使用javascript中的currentDate获得一周中的7天?

(首先,抱歉我的英语不好,我是初学者) 我有一个按日期显示的百分比图表。 我想在 x 轴上显示当前周的每一天。 所以,我试图找到如何获得一周中的 7 天。 这就是我所拥有的: 警报开始得很好……直到月底。 这就是我得到的: 所以,正如你所看到的,它切换了星期五......奇怪的是它切换
2回复

在javascript中的年-月-天中转换天数

嗨,我已经搜索了一段时间,但似乎无法找到答案。 我必须用JavaScript编写一个函数,该函数需要花几天的时间在参数中,然后将其转换为更易于理解的字符串。 例如: 因此, getFormatedStringFromDays(183)返回的内容类似于6 months 3 da
9回复

Javascript 日期加 2 周(14 天)

我用它来获取日期: 我怎样才能增加 2 周? 所以不是显示 10/13/2011,而是显示 10/27/2011 等 这是小提琴: http : //jsfiddle.net/25wNa/ 我希望一个输入有 +14 天,另一个输入有 +21 天 注意:我希望格式为 > 10/13/201
2回复

如何在 JavaScript 中获取一周中某一天的 k 个最近的日期?

我试图从一周中的某一天获取 k 个最近日期的列表,但我不知道如何。 有人可以给我一个提示或建议吗? 谢谢。 例如: