js 格式化间隔时间(如:2分钟前)
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分钟前)相关推荐
- 根据时间获取 几分钟前,几小时前 ········
根据时间获取 几分钟前,几小时前 ········ 能够根据时间字符串获取 几分钟前,几小时前,几天前,几月前,几年前 时间格式yyyy-MM-dd HH:mm:ss (可以缺省),例如:2020-0 ...
- js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间
js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间 1.一天前 var dateStr = new Date(); dateStr.setDate(dateStr.getDat ...
- Android 时间格式化(刚刚、x分钟前、x小时前、昨天、x天前、xx月xx日、xxxx年xx月xx日)
最近公司项目在搞动态相关的,产品昨天给出了时间格式,下午花了一点时间搞了一下,分享给大家. 1 分钟以内:刚刚 1-2分钟:1分钟前 过了1个小时(60分钟以内使用xx分钟前):1小时前 过了1个24 ...
- 微信小程序时间显示几分钟前、几小时前、几天前....
这里写自定义目录标题 diaplayTime: function (dateTimeStamp) { let newT = dateTimeStamp.replace(/-/g, '/'); //io ...
- js 格式化 java时间格式化_用JavaScript(js)对时间格式化
可以说是Web项目中不可或缺的一个Javascript类库,它可以帮助你快速的解决客户端编程的许多问题,下面贴出一个用js格式化时间的方法. Date.prototype.format=functio ...
- 仿微信朋友圈时间显示 根据时间获取几分钟前,几小时前,几天前,几月前,几年前
/*** 显示几天钱几周前几月前几年前* @param d* @return*/ public static String getFriendlytime(Date d){long delta = ( ...
- shell脚本获取当前时间、1分钟前时间、1小时前时间和1天前时间
#获取当前时间 time=`date +"%Y-%m-%d %H:%M:%S"` #获取一分钟之前 time=`date -d "1 minute ago" + ...
- JS 获取输入时间的前一年、前三个月
通过 getFullYear 获取输入时间的年限,再使用 setFullYear 设置年限. // 获取输入时间的上一年 export function getLastTime(localdate) ...
- js 格式化当前时间 日期推算
//第一位表示距离今天还有几天,如0表示今天,1表示明天,-1表示昨天 //第二位表示指定日期,默认不传为今天,支持格式'2020-10-10', '2020/01/01' function getT ...
最新文章
- 浅谈Python Web的五大框架
- 计算机网络技术与计算机应用技术,计算机网络技术和计算机应用技术.pdf
- SpringMVC(二)——转发和重定向、处理前端请求的数据(普通字符串/对象)
- bzoj1684[Usaco2005 Oct]Close Encounter*
- 18-Flutter移动电商实战-首页_火爆专区商品接口制作
- Effective Java -- 思维导图
- 黑龙江工程学院计算机系有几个门,黑龙江工程学院本科专业设置一览表
- perl first day
- 错过了多次捞钱的机会
- Java 模块化技术演进和对现有应用微服务化的意义
- 纯干货:LCD屏和OLED屏的区别?手机屏幕材质各有什么区别?
- sqlplus登录\连接命令、sqlplus命令的使用大全
- windowspythonpygame安装_pygame安装(windows pycharm)
- CP的mgmt_cli tool与SMC CLI用法
- Unity3D 2021.1.1F1。更新与下载。
- SharePoint 16 规划大型文档存储库
- 用计算机术语赞美老师,【用一句话赞美各个学科】_赞美各学科老师的对联
- C#制作简易赛尔号登陆器
- font-family字体中英文对照
- python计时器程序_Python计时器程序示例
热门文章
- git push 时提交被拒绝的原因
- hdu 1226 超级密码
- c语言中什么是指针初始化,C语言中的“char指针初始化”是什么意思?
- 统计本年度发布的房屋出租信息
- android 设备管理介绍
- mysql datediff函数怎么用_datediff函数的使用方法是如何的?
- 牛客网华为云服务器,牛客+华为云服务器
- 关闭QQ空间城市达人_陕南赤子_新浪博客
- 关于idea编译时提示 : 另一个程序正在使用此文件,进程无法访问; 问题修复记录
- 二叉树part8 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点