当前位置:首页 > JavaScript

js实现dateformat

2026-01-31 21:53:04JavaScript

JavaScript 实现日期格式化

在 JavaScript 中,Date 对象没有内置的格式化方法,但可以通过多种方式实现日期格式化。以下是几种常见的实现方法:

使用原生方法组合

通过 Date 对象的原生方法(如 getFullYeargetMonth 等)组合实现格式化:

function formatDate(date, format = 'YYYY-MM-DD') {
  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 format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hours)
    .replace('mm', minutes)
    .replace('ss', seconds);
}

// 使用示例
const today = new Date();
console.log(formatDate(today)); // 输出如 "2023-11-15"
console.log(formatDate(today, 'YYYY/MM/DD HH:mm:ss')); // 输出如 "2023/11/15 14:30:45"

使用 Intl.DateTimeFormat

Intl.DateTimeFormat 是 JavaScript 内置的国际化 API,可以方便地格式化日期:

function formatDate(date, locale = 'en-US', options = {}) {
  return new Intl.DateTimeFormat(locale, options).format(date);
}

// 使用示例
const today = new Date();
console.log(formatDate(today)); // 默认输出如 "11/15/2023"
console.log(formatDate(today, 'en-US', { 
  year: 'numeric', 
  month: 'long', 
  day: 'numeric' 
})); // 输出如 "November 15, 2023"

使用第三方库

如果需要更复杂的格式化功能,可以使用第三方库如 date-fnsmoment.js(后者已不再推荐):

// 使用 date-fns
import { format } from 'date-fns';

const today = new Date();
console.log(format(today, 'yyyy-MM-dd')); // 输出如 "2023-11-15"
console.log(format(today, 'MM/dd/yyyy HH:mm:ss')); // 输出如 "11/15/2023 14:30:45"

自定义格式化函数

如果需要完全自定义的格式化逻辑,可以扩展 Date 原型或编写独立函数:

js实现dateformat

Date.prototype.format = function(format) {
  const map = {
    'YYYY': this.getFullYear(),
    'MM': String(this.getMonth() + 1).padStart(2, '0'),
    'DD': String(this.getDate()).padStart(2, '0'),
    'HH': String(this.getHours()).padStart(2, '0'),
    'mm': String(this.getMinutes()).padStart(2, '0'),
    'ss': String(this.getSeconds()).padStart(2, '0'),
  };

  return format.replace(/YYYY|MM|DD|HH|mm|ss/g, match => map[match]);
};

// 使用示例
const today = new Date();
console.log(today.format('YYYY-MM-DD')); // 输出如 "2023-11-15"

注意事项

  • 月份从 0 开始计数(0 表示一月),因此需要 +1
  • 使用 padStart 确保数字位数一致(如 1 变为 01)。
  • 国际化场景下优先使用 Intl.DateTimeFormat
  • 避免扩展原生原型(如 Date.prototype),可能与其他库冲突。

标签: jsdateformat
分享给朋友:

相关文章

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…