当前位置:首页 > 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实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…