javascript 距Moment.js的特定日期数天/数周前

vmpqdwk3  于 2023-03-11  发布在  Java
关注(0)|答案(3)|浏览(141)

我使用moment.js,我有3个不同的日期,例如

  • 30.07.2018
  • 12.06.2018
  • 10.05.2018

我现在尝试获得从这些日期到今天(如果小于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;
    });

});

我还需要什么:

  • 不显示初始日期,只显示"3 Days"。如果它删除“结果”,我想再工作了。
  • 未显示"7 weeks 2 days",应仅显示"7 weeks"

下面是实际的fiddle

70gysomp

70gysomp1#

你可以使用momentjs**diff()方法**来完成这个任务,它可以根据你传递给它的选项,返回daysweeksmonthshoursminutes,...中两个dates之间的差值。
这是应该如何是你的代码:

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

演示:

x一个一个一个一个x一个一个二个x

htrmnn0y

htrmnn0y2#

Moment.js具有fromNow()函数,可返回当前日期/时间的“x天”或“x小时前”。

moment([2007, 0, 29]).fromNow();     // 4 years ago
moment([2007, 0, 29]).fromNow(true); // 4 years
68bkxrlz

68bkxrlz3#

const getTime = (date) => {
    let result = moment(date).fromNow();
    const now = moment();
    const days = now.diff(date, 'days');
    const weeks = now.diff(date, 'weeks');
    if (days >= 7) {
      if (days <= 13) {
        result = `a week ago`;
      } else if (days > 13 && days <= 25) {
        result = `${weeks} weeks ago`;
      }
    }
    return result;
  };

  getTime("2023-03-07 12:21:51") // 3 days ago
  getTime("2023-02-28 12:21:51") // a week ago
  getTime("2023-02-07 12:21:51") // a month ago

相关问题