function formatIntervalTime(timeStr) {const targetTime = new Date(timeStr);const presentTime = new Date();const date1 = targetTime.valueOf();const date2 = presentTime.valueOf();let startTime,endTime,future = false;// 判断开始时间和结束时间if (date1 > date2) {future = true;startTime = date2;endTime = date1 + 1000;} else {startTime = date1;endTime = date2;}const difference = endTime - startTime; //时间差的毫秒数//计算出相差天数const days = Math.floor(difference / (24 * 3600 * 1000));//计算出小时数const leave1 = difference % (24 * 3600 * 1000); //计算天数后剩余的毫秒数const hours = Math.floor(leave1 / (3600 * 1000));//计算相差分钟数const leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数const minutes = Math.floor(leave2 / (60 * 1000));//计算相差秒数const leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数const seconds = Math.round(leave3 / 1000);if (seconds >= 0 && days === 0 && hours === 0 && minutes === 0) {// 时间相差在一分钟内return '刚刚';} else if (minutes > 0 && days === 0 && hours === 0) {// 时间相差在一小时内return minutes + '分钟' + (future ? '后' : '前');} else if (hours > 0 && days === 0) {// 时间相差在一天内return hours + '小时' + (future ? '后' : '前');} else if (days > 0) {// 时间相差大于一天if (days === 1) {// 时间相差在一天以上小于两天return future ? '明天' : '昨天';} else if (days < 4) {// 时间相差在三天内return days + '天' + (future ? '后' : '前');} else if (days > 3) {// 时间相差大于三天const y = targetTime.getFullYear();const m = targetTime.getMonth() + 1;const d = targetTime.getDate();if (y === presentTime.getFullYear()) {// 时间相差在一年内return m + '月' + d + '日';} else {// 时间相差大于一年return y + '年' + m + '月' + d + '日';}}}
};

使用:

// 基准时间 2022-11-23 18:00:34
// 相差一分钟内
formatIntervalTime('2022-11-23 18:00:30'); // 返回:刚刚
// 相差一小时内
formatIntervalTime('2022-11-23 17:59:34'); // 返回:1分钟前
// 相差一天内
formatIntervalTime('2022-11-23 17:00:34'); // 返回:1小时前
// 相差大于一天小于两天
formatIntervalTime('2022-11-22 18:00:34'); // 返回:昨天
// 相差小于三天
formatIntervalTime('2022-11-21 18:00:34'); // 返回:2天前
// 相差大于三天
formatIntervalTime('2022-09-24 18:00:34'); // 返回:9月24日
// 相差大于一年
formatIntervalTime('2021-11-28 18:00:34'); // 返回:2021年11月28日

原理:

主要就是通过获取两个时间(传入的时间、现在的时间)相差的毫秒数,在计算相差的天数,小时数、分钟数和秒数,再通过一些判断返回对应的字符串

结束语:

要是输出的不符合你的要求,可以将函数最后的逻辑部分改成自己的风格

写的不好,还请见谅。若有错误,烦请指出,谢谢

js 格式化间隔时间(如:2分钟前)相关推荐

  1. 根据时间获取 几分钟前,几小时前 ········

    根据时间获取 几分钟前,几小时前 ········ 能够根据时间字符串获取 几分钟前,几小时前,几天前,几月前,几年前 时间格式yyyy-MM-dd HH:mm:ss (可以缺省),例如:2020-0 ...

  2. js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间

    js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间 1.一天前 var dateStr = new Date(); dateStr.setDate(dateStr.getDat ...

  3. Android 时间格式化(刚刚、x分钟前、x小时前、昨天、x天前、xx月xx日、xxxx年xx月xx日)

    最近公司项目在搞动态相关的,产品昨天给出了时间格式,下午花了一点时间搞了一下,分享给大家. 1 分钟以内:刚刚 1-2分钟:1分钟前 过了1个小时(60分钟以内使用xx分钟前):1小时前 过了1个24 ...

  4. 微信小程序时间显示几分钟前、几小时前、几天前....

    这里写自定义目录标题 diaplayTime: function (dateTimeStamp) { let newT = dateTimeStamp.replace(/-/g, '/'); //io ...

  5. js 格式化 java时间格式化_用JavaScript(js)对时间格式化

    可以说是Web项目中不可或缺的一个Javascript类库,它可以帮助你快速的解决客户端编程的许多问题,下面贴出一个用js格式化时间的方法. Date.prototype.format=functio ...

  6. 仿微信朋友圈时间显示 根据时间获取几分钟前,几小时前,几天前,几月前,几年前

    /*** 显示几天钱几周前几月前几年前* @param d* @return*/ public static String getFriendlytime(Date d){long delta = ( ...

  7. shell脚本获取当前时间、1分钟前时间、1小时前时间和1天前时间

    #获取当前时间 time=`date +"%Y-%m-%d %H:%M:%S"` #获取一分钟之前 time=`date -d "1 minute ago" + ...

  8. JS 获取输入时间的前一年、前三个月

    通过 getFullYear 获取输入时间的年限,再使用 setFullYear 设置年限. // 获取输入时间的上一年 export function getLastTime(localdate) ...

  9. js 格式化当前时间 日期推算

    //第一位表示距离今天还有几天,如0表示今天,1表示明天,-1表示昨天 //第二位表示指定日期,默认不传为今天,支持格式'2020-10-10', '2020/01/01' function getT ...

最新文章

  1. 浅谈Python Web的五大框架
  2. 计算机网络技术与计算机应用技术,计算机网络技术和计算机应用技术.pdf
  3. SpringMVC(二)——转发和重定向、处理前端请求的数据(普通字符串/对象)
  4. bzoj1684[Usaco2005 Oct]Close Encounter*
  5. 18-Flutter移动电商实战-首页_火爆专区商品接口制作
  6. Effective Java -- 思维导图
  7. 黑龙江工程学院计算机系有几个门,黑龙江工程学院本科专业设置一览表
  8. perl first day
  9. 错过了多次捞钱的机会
  10. Java 模块化技术演进和对现有应用微服务化的意义
  11. 纯干货:LCD屏和OLED屏的区别?手机屏幕材质各有什么区别?
  12. sqlplus登录\连接命令、sqlplus命令的使用大全
  13. windowspythonpygame安装_pygame安装(windows pycharm)
  14. CP的mgmt_cli tool与SMC CLI用法
  15. Unity3D 2021.1.1F1。更新与下载。
  16. SharePoint 16 规划大型文档存储库
  17. 用计算机术语赞美老师,【用一句话赞美各个学科】_赞美各学科老师的对联
  18. C#制作简易赛尔号登陆器
  19. font-family字体中英文对照
  20. python计时器程序_Python计时器程序示例

热门文章

  1. git push 时提交被拒绝的原因
  2. hdu 1226 超级密码
  3. c语言中什么是指针初始化,C语言中的“char指针初始化”是什么意思?
  4. 统计本年度发布的房屋出租信息
  5. android 设备管理介绍
  6. mysql datediff函数怎么用_datediff函数的使用方法是如何的?
  7. 牛客网华为云服务器,牛客+华为云服务器
  8. 关闭QQ空间城市达人_陕南赤子_新浪博客
  9. 关于idea编译时提示 : 另一个程序正在使用此文件,进程无法访问; 问题修复记录
  10. 二叉树part8 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点