实现时间显示几天前、几小时前或者几分钟前的方法,在前端开发中是比较常见的需求之一,下面我们来讲解一下相关的实现技巧和方法。
方法一:利用Moment.js库实现
Moment.js是一个便捷的日期处理类库,可以帮助我们轻松地完成日期和时间的格式化、解析和计算等操作。在基于Moment.js库实现的时间显示几天前、几小时前或者几分钟前的方法中,我们可以使用其巨大的便利。实现如下:
<script src="//cdn.bootcss.com/moment.js/2.18.1/moment.min.js"></script>
<script src="//cdn.bootcss.com/moment.js/2.18.1/locale/zh-cn.js"></script>
<script>
function timeago(time) {
return moment(time).locale('zh-cn').fromNow();
}
</script>
上述代码依赖Moment.js库,需要先在HTML页面中引入moment.min.js和locale/zh-cn.js文件,然后编写timeago方法,将传入的时间参数作为moment库的参数,然后将locale设置为“zh-cn”,最后调用fromNow方法即可。如果传入的是当前时间,则该方法将返回“刚刚”;如果时间紧挨着当前时间,该方法返回“几秒前”;若时间早于当前时间,该方法返回“几分钟前”、“几小时前”、“几天前”等。
方法二:手动计算时间差
如果不想依赖Moment.js库,我们也可以手动计算时间差,实现“几天前”、“几小时前”、“几分钟前”的效果。具体实现如下:
function timeago(time) {
var timestamp = Date.parse(time.replace(/-/gi, '/')) / 1000; // 兼容iOS Safari时间格式
var mistiming = Math.round((new Date().getTime() / 1000 - timestamp) / 60);
if (mistiming < 60) {
return mistiming + '分钟前';
}
var timing = Math.round(mistiming / 60);
if (timing < 24) {
return timing + '小时前';
}
var timingday = Math.round(timing / 24);
if (timingday < 30) {
return timingday + '天前';
} else if (timingday > 30 && timingday < 365) {
return Math.round(timingday / 30) + '个月前';
} else {
return Math.round(timingday / 365) + '年前';
}
}
上述代码中,我们先将传入的时间字符串转成时间戳,再获取当前时间戳,然后计算两者之间的时间差(单位为分钟)。接着,根据时间差的大小,返回“几分钟前”、“几小时前”和“几天前”等时间字符串。若时间差超过一个月,则返回“几个月前”;若时间差超过一年,则返回“几年前”。
以上就是实现时间显示几天前、几小时前或者几分钟前的方法的两种不同实现。您可以举一些具体的实例进行测试和调试。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现时间显示几天前、几小时前或者几分钟前的方法集锦 - Python技术站