当前位置: 首页 > 知识库问答 >
问题:

从特定日期起的天/周前。js

邢飞鸿
2023-03-14

我与当下一起工作。js和我有3个不同的日期,例如。

  • 2018年7月30日
  • 2018年6月12日
  • 2018年5月10日

现在,我尝试获取从这些日期到今天(如果少于7天前)或到今天(如果超过7天前)的周数的差值,并将其放置在几个跨度中。

更新感谢托马斯!

我得到:

$(document).ready(function(){
    $('.timestamp').html((index, html) => {

        let date = moment(html, "DD.MM.YYYY HH:mm", true), 
        now = moment(),
        days = Math.floor(Math.abs(date - now) / 86400000), 
        weeks = Math.floor(days/7),
        result = date.format("DD.MM.YYYY") + " - ";

      if(weeks){
        result += weeks + (weeks===1? " week ": " weeks ");
        days = days % 7;        
      }

      if(days || weeks===0){
        result += days + (days === 1? " day": " days");
      }

      return result;
    });

});

我还需要什么:

>

不显示“7周2天”,这应该是“7周”

这是实际的小提琴。

共有2个答案

杜嘉木
2023-03-14

片刻js有fromNow()函数,从当前日期/时间返回“x天”或“x小时前”。

moment([2007, 0, 29]).fromNow();     // 4 years ago
moment([2007, 0, 29]).fromNow(true); // 4 years
穆铭晨
2023-03-14

您可以使用momentjsdiff()方法来实现这一点,该方法可以返回两个日期之间的差值,小时分钟。。。基于您传递给它的选项。

这就是你的代码应该是什么:

now = moment()
days = now.diff(date, "days")
weeks = now.diff(date, "weeks")

演示:

$(document).ready(function() {
  $('.timestamp').html((index, html) => {

    let date = moment(html, "DD.MM.YYYY HH:mm", true),
      now = moment(),
      days = now.diff(date, "days"),
      weeks = now.diff(date, "weeks"),
      result = "";

    if (weeks) {
      result += weeks + (weeks === 1 ? " week " : " weeks ");
      days = days % 7;
    } else if (days || weeks === 0) {
      result += days + (days === 1 ? " day" : " days");
    }

    result += '<br />';
    return result;
  });
});
<span class="timestamp">30.07.2018 00:00</span>
<span class="timestamp">12.06.2018 00:00</span>
<span class="timestamp">10.05.2018 00:00</span>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

 类似资料:
  • 我正在努力寻找一个简单而有效的解决方案来计算一个月中的一周和一天。例如,如果给定的日期是2018年3月5日的第一个星期一,那么我想得到接下来6个月每个月的第一个星期一的日期,例如:和2018年5月3日星期一等等。 我试着从这个问题中使用以下代码。然而,下面的代码只返回我希望它返回整个日期的周数。 但是我很困惑,不知道如何修改上面的代码来解决这个问题。任何帮助都将不胜感激。

  • 问题内容: 我需要最快的方式来获得一周的第一天。例如:今天是11月11日,是星期四;我想要本周的第一天(即11月8日)和一个星期一。我需要用于MongoDB地图功能的最快方法,有什么想法吗? 问题答案: 使用Date对象的方法,您可以知道星期几(0 =星期日,1 =星期一,等等)。 然后,您可以减去该天数加一,例如:

  • 问题内容: 如何以这种格式从现在开始在Android之前的一周之前获取日期: 例如:现在,一周前 谢谢 问题答案: 解析日期: 然后计算出您需要减去的毫秒数: 或使用该类提供的API : 然后,如果需要,将其转换回字符串:

  • 我正在制作一个应用程序,让用户选择几天,并在这些天的特定时间启动警报。 让我们以我的问题为例,我希望我的闹钟在每周五12:30触发,问题是它从来没有触发过闹钟,即使我在同一天,这是我的代码

  • 问题内容: 我需要从MySQL选择语句中的某个日期算起几周。其中一个表中有一个日期列,我需要计算该日期有几周。 例子: 6 days away, weeks out = 0 7 days away, weeks out = 1 13 days away, weeks out = 1 14 days away, weeks out = 2 问题答案: 使用DATEDIFF函数: WEEKS的问题在于

  • 问题内容: 如何找出上一个(上一个)“星期五”或指定日期之后的其他日期的日期? 问题答案: 我不会给出答案(请先尝试一下!),但是,也许这些技巧可以为您提供帮助。 您首先需要确定您所在的星期几。您可能想看一下Java的Calendar类,以了解如何做到这一点。 确定日期后,请考虑模数运算符以及如何使用该运算符向后移动以从当前所在的日期开始寻找所需的前一天。(请记住,一周是7天,一周中的每一天在这7