当前位置: 首页 > news >正文

JavaScript 中处理日期格式化

在 JavaScript 中处理日期格式化,原生能力确实有限,但现代的 Intl 对象提供了不错的基础支持。对于更复杂或要求高的场景,社区一些优秀的库能让你事半功倍。

下面这个表格整理了主要的日期格式化方案,帮你快速了解:

方案类型 代表库/方法 核心特点 适用场景
原生 JS 方案 Intl.DateTimeFormat 浏览器内置,支持国际化,无需额外依赖 简单的、对包体积敏感的需求
手动拼接 完全控制输出格式,代码灵活 极简单的特定格式,且不愿引入任何工具
第三方库 Day.js 轻量(仅 2kB),API 与 Moment.js 相似 绝大多数项目,平衡功能与体积
date-fns 函数式、模块化,按需引入 模块化项目,追求 tree shaking
Moment.js 功能极其全面,社区资源丰富 遗留项目,或需要处理非常复杂的日期时间

💻 原生 JavaScript 方案

如果需求简单,或者你特别在意包大小,原生能力基本够用。

  1. Intl.DateTimeFormat (推荐)
    这是目前浏览器原生方法里最强大和现代的,尤其擅长处理国际化。

    const date = new Date();
    const formatter = new Intl.DateTimeFormat('zh-CN', {year: 'numeric',month: '2-digit',day: '2-digit',hour: '2-digit',minute: '2-digit',second: '2-digit',hour12: false // 使用24小时制
    });
    console.log(formatter.format(date)); // 输出示例: "2023/10/05 15:24:00"
    
  2. 手动拼接
    这种方式就是直接获取日期的各个部分,然后拼成你想要的字符串。

    function formatDate(date) {const year = date.getFullYear();const month = String(date.getMonth() + 1).padStart(2, '0');const day = String(date.getDate()).padStart(2, '0');const hours = String(date.getHours()).padStart(2, '0');const minutes = String(date.getMinutes()).padStart(2, '0');const seconds = String(date.getSeconds()).padStart(2, '0');return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
    }console.log(formatDate(new Date())); // 输出示例: "2023-10-05 15:24:00"
    

    缺点也很明显:代码相对繁琐,处理12小时制、时区、本地化等会很麻烦。

🧰 第三方库推荐

当原生方法无法满足需求时,下面这些库是更好的选择。

  1. Day.js:现代轻量之选

    • 优势:API 设计友好,体积极小,可以通过插件扩展功能(如时区、相对时间等)。
    • 示例
      import dayjs from 'dayjs';console.log(dayjs().format('YYYY-MM-DD')); // 输出示例:"2025-03-26"
      console.log(dayjs().format('YYYY-MM-DD HH:mm:ss')); // 输出示例:"2025-06-05 10:00:00"
      
  2. date-fns:模块化工具集

    • 优势函数式编程风格,利于 tree shaking,特别适合在模块化打包的项目中使用,可以只引入你用到的方法。
    • 示例
      import { format } from 'date-fns';console.log(format(new Date(), 'yyyy-MM-dd HH:mm:ss')); // 输出示例:"2023-06-05 10:00:00"
      

💎 如何选择?

  • 追求小巧、易上手,应对大部分日常场景:直接选择 Day.js
  • 项目基于模块化构建,且注重代码最优打包:可以考虑 date-fns
  • 处理简单日期显示,且不希望任何外部依赖:使用原生的 Intl.DateTimeFormat
  • 维护老项目,或需要进行极其复杂的日期操作(如大量历史时区转换):才考虑 Moment.js
http://www.rkmt.cn/news/23022.html

相关文章:

  • 2025年在线粘度计厂家推荐排行榜,实验室在线粘度计,工业在线粘度计,高精度在线粘度计公司推荐!
  • 2025年网格川字塑料托盘厂家推荐排行榜,耐用抗压,仓储物流首选!
  • 基于MATLAB的FIR和IIR低通/带通滤波器实现
  • 2025年沸腾制粒机厂家权威推荐榜:沸腾制粒/湿法混合/摇摆制粒机,专业性能与客户口碑深度解析及优质品牌推荐!
  • 2025年柴油发电机组厂家权威推荐榜:静音高效与持久耐用的行业首选!
  • 设备二维码图片下载
  • neural network中的tensor是什么?
  • 2025年工厂维保,工厂机电维修,工厂应急维修,工厂运维服务厂家推荐排行榜,专业高效与全方位保障之选!
  • 2025/10/17
  • 有没有人坐11.1号晚上9点的火车返回衡水,大家要一起走么
  • Cursor国内用户无法使用模型(Model not avilable)解决方案
  • 2025年10月超声波清洗机厂家推荐:榜单透视与选购要点
  • 2025年混合机厂家推荐排行榜,槽型/卧式槽型/双螺旋锥形/螺杆锥形/高速/立式高速/方锥/方锥型/螺带/卧式螺带/V型/双锥/一维/一维运动/二维/二维运动/三维运动/三维混合机公司推荐
  • 2025年网络推广/网络营销/网络营销推广服务商权威推荐榜单,专业策略与高效转化口碑之选!
  • Avaloni11开发笔记
  • 题解:P12550 [UOI 2025] Reversal ABC
  • 编译安装gdb 编译安装gdb
  • 2025年10月商标注册公司推荐榜:五强对比与中立评测助您高效决策
  • 2025年发电机组厂家推荐排行榜,柴油/燃气/船用/静音箱式/移动拖车式/集装箱式/上柴/玉柴/潍柴/康明斯/沃尔沃/道依茨/帕金斯/MTU发电机组公司推荐!
  • 2025年10月敏感皮肤修复产品推荐榜:五款热门单品深度对比与客观评析
  • 题解:P7275 计树
  • mysql新建用户并授权,mysql新建用户并授权完整指南
  • CRC32的直接和反转模式
  • 2025年10月石墨电极厂家推荐榜单详解:从产线到应用看晶碳科技真实表现
  • 2025年西安买房新楼盘口碑排行榜:地建嘉信臻城领跑高端住宅市场
  • 2025年数粒机厂家推荐排行榜,防爆/新型/高速/高精度/智能/大容量/多通道/电子/视觉/全自动/低噪音/制药用/农业用/食品用/电子元件/光电/定制化/鹌鹑蛋/糖果/坚果/药品/片剂数粒机公司推荐
  • git和gitee的学习研究
  • 从“看得见”到“看得懂”:国标GB28181算法算力平台EasyGBS与公安安防数字化的深度融合
  • 山海鲸可视化可以导入哪些常用的3D模型?
  • 读书笔记:什么时候该用B*树索引?一个接地气的解读