Javascript 超过一周、一个月或一年的天数

Javascript 超过一周、一个月或一年的天数,javascript,Javascript,例如,如果我的两个日期仅相隔5天,我希望显示5天前的 但是,如果它们相隔12天,我会在1周前显示 如果它们相隔大约29天,我会显示一个月前的 然而,不同的月份有不同的天数,所以我下面的代码不起作用,我该怎么做呢 到目前为止,我所拥有的: switch(true) { case (diff == 0): difference = 'Today'; break; case (diff < 7): difference = diff + 'day' + (diff &

例如,如果我的两个日期仅相隔5天,我希望显示5天前的

但是,如果它们相隔12天,我会在1周前显示

如果它们相隔大约29天,我会显示一个月前的

然而,不同的月份有不同的天数,所以我下面的代码不起作用,我该怎么做呢

到目前为止,我所拥有的:

switch(true) {
  case (diff == 0):
    difference = 'Today';
  break;
  case (diff < 7):
    difference = diff + 'day' + (diff > 1 ? 's' : '') + ' ago';
  case;
  case (diff >= 7):
    difference = (diff / 7) + 'week' + ((diff / 7) > 1 ? 's' : '') + ' ago';
  break;
  case (diff >= 28) 
  break;
}
开关(真){
情况(差异==0):
差异=‘今天’;
打破
病例(差异<7):
差异=差异+‘天’+(差异>1?’:“”)+‘以前’;
案例
情况(差异>=7):
差异=(diff/7)+‘周’+((diff/7)>1?'s':“”)+‘前’;
打破
案例(差异>=28)
打破
}
我将使用
相对时间
,这样您就不必自己担心这个难题:

moment("20111031", "YYYYMMDD").fromNow(); // 5 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 5 years ago
moment().startOf('day').fromNow();        // 13 hours ago
moment().endOf('day').fromNow();          // in 11 hours
moment().startOf('hour').fromNow();       // 26 minutes ago

当然,这是假设OP可以为这个项目使用第三方扩展。@Oriol-人们显然非常喜欢momentjs:P@Lix如果op不知道如何使用它,他可以再次询问或搜索答案XD@xale94-重新措辞我的评论-我不是说OP不知道如何使用它。只是他们可能不允许在项目中包含外部代码。谢谢,这看起来是最好的选择。我不明白。你想让29天变成“1个月前”,但只在2月份?还是因为快一个月了?或者在上个月发生的时候说“1个月前”,即使是1天前?只要给它设定一个限制。有高于27的差别吗?28? 变成一个月。您编写的代码应该可以工作吗?此外,这也没关系。因为你在计算两天之间的差值,所以这两天是在2月还是在8月并不重要。如果问题是计算两个日期之间的天数,请将它们全部转换为1970年后的毫秒,然后进行减法和除法。首先用英语定义“一个月”的长度。然后在代码中实现。