从秒到年:打造与过去日期相关的智能显示

news/2024/7/7 19:53:11

如何格式化过去的日期?

在前端开发中,经常会遇到需要将过去的日期转换成易读的形式,比如"刚刚"、“几分钟前”、"几小时前"等。为了方便处理这种情况,我们可以使用一个自定义的JavaScript方法来实现日期的格式化。

方法介绍

下面是这个格式化过去日期的方法:

const formatPast = (date, type = "default", zeroFillFlag = true) => {
  // 获取当前时间和传入时间之间的时间差
  const currentTime = new Date().getTime();
  const afferentTime = new Date(date).getTime();
  const timeDifference = currentTime - afferentTime;

  // 根据时间差的不同范围返回不同的字符串表示
  switch (true) {
    case timeDifference < 10000:
      return "刚刚";
    case timeDifference < 60000:
      return `${Math.floor(timeDifference / 1000)}秒前`;
    case timeDifference < 3600000:
      return `${Math.floor(timeDifference / 60000)}分钟前`;
    case timeDifference < 86400000:
      return `${Math.floor(timeDifference / 3600000)}小时前`;
    case timeDifference >= 86400000 && type === "default":
      let countTime = Math.floor(timeDifference / 86400000);
      if (countTime >= 365) {
        return `${Math.floor(countTime / 365)}年前`;
      }
      if (countTime >= 30) {
        return `${Math.floor(countTime / 30)}个月前`;
      }
      return `${countTime}天前`;
    default:
      // 如果时间差超过一天,返回具体的日期表示
      const formattedDate = new Date(date);
      const Y = formattedDate.getFullYear();
      const M = formattedDate.getMonth() + 1;
      const D = formattedDate.getDate();
      const zeroFillM = zeroFillFlag ? M.toString().padStart(2, "0") : M;
      const zeroFillD = zeroFillFlag ? D.toString().padStart(2, "0") : D;

      if (type === "-" || type === "/" || type === ".") {
        return `${Y}${type}${zeroFillM}${type}${zeroFillD}`;
      }
      if (type === "年月日") {
        return `${Y}${zeroFillM}${zeroFillD}`;
      }
      if (type === "月日") {
        return `${zeroFillM}${zeroFillD}`;
      }
      if (type === "年") {
        return `${Y}`;
      }
  }
};

使用示例

const date1 = "2024-02-15T09:30:00"; // 过去的日期
const date2 = "2024-02-28T15:45:00"; // 过去的日期

console.log(formatPast(date1)); // 输出:15天前
console.log(formatPast(date2, "年月日")); // 输出:2024年02月28日

在上述示例中,我们传入了不同的过去日期,并使用不同的格式类型进行格式化。你可以根据自己的需要选择合适的格式类型。

结语

这个自定义的JavaScript方法可以帮助我们方便地将过去的日期格式化成易读的形式。通过灵活使用不同的格式类型,我们可以根据需求展示出符合用户期望的日期表示。


http://lihuaxi.xjx100.cn/news/2078616.html

相关文章

JavaWeb中 Servlet和CGI的区别是什么?

Servlet和CGI&#xff08;Common Gateway Interface&#xff09;都是用于Web服务器与外部程序之间交互的技术&#xff0c;但它们在设计、性能和实现方式上有显著的区别&#xff1a; 1. **技术实现**&#xff1a; - **Servlet**&#xff1a;是Java编写的&#xff0c;运行在服…

WatiN——Web自动化测试(三)【弹出窗口处理】

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

Androidstudio实现登录按钮按下变色

在activity_main.xml中&#xff0c;写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"androi…

在vue2中使用tailwindcss(完整教程)

如果你看过好多教程之后&#xff0c;还是报错&#xff0c;无法使用tailwindcss&#xff0c;我希望本教程可以让你成功上岸。 环境要求 node&#xff1a;>v14.17.0 安装tailwindcss 由于最新的tailwind css使用post css 8版本&#xff0c;vue2框架暂时还不支持&#xff0…

开篇语 | 容器中的⼤模型 (LLM in Containers)

如果我们想搭建一个企业级的大模型应用&#xff0c;不管使用开源的基础模型自己来发布&#xff0c;还是使用类似于 ChatGPT 的闭源 API&#xff0c;我们都需要搭建一个大模型流水线来管理应用体系中除了基础模型之外的功能模块。 Replit 的一篇博客&#xff08;https://blog.r…

【牛客】HJ87 密码强度等级 CM62 井字棋

题目一:密码强度等级 题目链接&#xff1a;密码强度等级_牛客题霸_牛客网 (nowcoder.com) 本题主要考察C语言中逻辑分支语句&#xff0c;基本语句以及对各种特殊字符 &#xff0c;ASCII值以及条件表达中的逻辑运算符关系运算符各自功能的理解&#xff0c;以及基本使用&#x…

2023年NOC大赛软件创意编程(学而思)赛道c++初赛试题

2023NOC软件创意编程初中组C++初赛 一、单选 1、(2分)下列选项中,不属于计算机软件系统的是 A 操作系统 C.用户自己开发的软件系统 B.系统文用程序D.存储系统 2、(2分)十进制数17对应的二进制数是( A 11000B.10001 C 11111 D.10101 3、(2分)关于函数,以下说法错误的是( A…

docker搭建odoo16开发环境

要使用Docker搭建Odoo 16的开发环境&#xff0c;我们需要准备两个主要文件&#xff1a;一个是docker-compose.yml文件&#xff0c;用来定义和运行多个Docker应用容器&#xff0c;包括Odoo 16和PostgreSQL 15&#xff1b;另一个是odoo.conf文件&#xff0c;用来配置Odoo应用。下…