如何格式化自xxx以来的时间,例如“4分钟前”,类似于Stack Exchange站点

2022-08-29 23:59:38

问题是如何将JavaScript格式化为字符串,说明经过的时间,类似于您在Stack Overflow上看到时间显示的方式。Date

例如:

  • 1分钟前
  • 1小时前
  • 11小时前
  • 1 个月 前
  • 1 年 前

答案 1

function timeSince(date) {

  var seconds = Math.floor((new Date() - date) / 1000);

  var interval = seconds / 31536000;

  if (interval > 1) {
    return Math.floor(interval) + " years";
  }
  interval = seconds / 2592000;
  if (interval > 1) {
    return Math.floor(interval) + " months";
  }
  interval = seconds / 86400;
  if (interval > 1) {
    return Math.floor(interval) + " days";
  }
  interval = seconds / 3600;
  if (interval > 1) {
    return Math.floor(interval) + " hours";
  }
  interval = seconds / 60;
  if (interval > 1) {
    return Math.floor(interval) + " minutes";
  }
  return Math.floor(seconds) + " seconds";
}
var aDay = 24*60*60*1000;
console.log(timeSince(new Date(Date.now()-aDay)));
console.log(timeSince(new Date(Date.now()-aDay*2)));

答案 2

在这种情况下,这可能是一个过度的杀戮,但如果机会显示时刻.js真是太棒了!

Moment.js是一个javascript日期时间库,要将其用于这种情况,您需要执行以下操作:

moment(yourdate).fromNow()

http://momentjs.com/docs/#/displaying/fromnow/

2018年附录Luxon是一个新的现代图书馆,可能值得一看!