JS实用小方法-将时间转换为 `刚刚`、`几秒前`、`几分钟前`、`几小时前`、`几天前`、几月前或按照传入格式显示

本文主要是介绍JS实用小方法-将时间转换为 `刚刚`、`几秒前`、`几分钟前`、`几小时前`、`几天前`、几月前或按照传入格式显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参数相关

  • date为传入时间 例:"2023/5/10 11:32:01" 2023-02-01 09:32:01
  • type为返回类型 例:- / 年月日 年
  • 默认规则,大于等于一天(24小时)展示'X天前;大于等于30天且小于365天展示'X个月前';大于等于365天且展示'x年前',否则按照传入参数规则展示
  • zeroFillFlag参数为是否数字补零,默认补零
  • 时间参数date为必写参数

时间处理公式依据

  • 10秒: 10 * 1000
  • 1分钟: 60 * 1000
  • 1小时: 60 * 60 * 1000
  • 24小时(一天):60 * 60 * 24 * 1000
 
    const formatPast = (date, type = "default", zeroFillFlag = true) => {// 定义countTime变量,用于存储计算后的数据let countTime;// 获取当前时间戳let time = new Date().getTime();// 转换传入参数为时间戳let afferentTime = new Date(date).getTime();// 当前时间戳 - 传入时间戳time = Number.parseInt(`${time - afferentTime}`);if (time < 10000) {// 10秒内return "刚刚";} else if (time < 60000) {// 超过10秒少于1分钟内countTime = Math.floor(time / 1000);return `${countTime}秒前`;} else if (time < 3600000) {// 超过1分钟少于1小时countTime = Math.floor(time / 60000);return `${countTime}分钟前`;} else if (time < 86400000) {// 超过1小时少于24小时countTime = Math.floor(time / 3600000);return `${countTime}小时前`;} else if (time >= 86400000 && type == "default") {// 超过二十四小时(一天)且格式参数为默认"default"countTime = Math.floor(time / 86400000);//大于等于365天if (countTime >= 365) {return `${Math.floor(countTime / 365)}年前`;}//大于等于30天if (countTime >= 30) {return `${Math.floor(countTime / 30)}个月前`;}return `${countTime}天前`;} else {// 一天(24小时)以上且格式不为"default"则按传入格式参数显示不同格式// 数字补零let Y = new Date(date).getFullYear();let M = new Date(date).getMonth() + 1;let zeroFillM = M > 9 ? M : "0" + M;let D = new Date(date).getDate();let zeroFillD = D > 9 ? D : "0" + D;// 传入格式为"-" "/" "."if (type == "-" || type == "/" || type == ".") {return zeroFillFlag? Y + type + zeroFillM + type + zeroFillD: Y + type + M + type + D;}// 传入格式为"年月日"if (type == "年月日") {return zeroFillFlag? Y + type[0] + zeroFillM + type[1] + zeroFillD + type[2]: Y + type[0] + M + type[1] + D + type[2];}// 传入格式为"月日"if (type == "月日") {return zeroFillFlag? zeroFillM + type[0] + zeroFillD + type[1]: M + type[0] + D + type[1]}// 传入格式为"年"if (type == "年") {return Y + type}}};console.log(formatPast("2024-1-1 11:11:11")); // 3天前console.log(formatPast("2023-11-1 11:11:11")); // 2个月前console.log(formatPast("2015-07-10 21:32:01")); // 8年前console.log(formatPast("2023-02-01 09:32:01", "-", false)); // 2023-2-1console.log(formatPast("2023.12.8 19:32:01", "/")); // 2023/12/08console.log(formatPast("2023.12.8 19:32:01", ".")); // 2023.12.08console.log(formatPast("2023/5/10 11:32:01", "年月日")); // 2023年05月10日console.log(formatPast("2023/6/25 11:32:01", "月日", false)); // 6月25日console.log(formatPast("2023/8/08 11:32:01", "年")); // 2023年

这篇关于JS实用小方法-将时间转换为 `刚刚`、`几秒前`、`几分钟前`、`几小时前`、`几天前`、几月前或按照传入格式显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722063

相关文章

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线

解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题

《解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题》在Spring开发中,@Autowired注解常用于实现依赖注入,它可以应用于类的属性、构造器或setter方法上,然... 目录1. 为什么 @Autowired 在属性上被警告?1.1 隐式依赖注入1.2 IDE 的警告:

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

python 3.8 的anaconda下载方法

《python3.8的anaconda下载方法》本文详细介绍了如何下载和安装带有Python3.8的Anaconda发行版,包括Anaconda简介、下载步骤、安装指南以及验证安装结果,此外,还介... 目录python3.8 版本的 Anaconda 下载与安装指南一、Anaconda 简介二、下载 An

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键