当前位置:首页 > 行业动态 > 正文

date格式化js

在JavaScript中,日期格式化可通过Date对象内置方法(如toLocaleDateString)或第三方库(如moment.js/date-fns)实现,常用方案包括手动拼接年月日(getFullYear+getMonth+1+getDate),或使用Intl.DateTimeFormat进行本地化处理,灵活满足YYYY-MM-DD等格式需求。

在JavaScript中处理日期格式化是开发中的常见需求,本文将详细介绍5种实用方法,并提供可直接复制的代码示例。

原生Date对象基础方法

const date = new Date();
// 获取基本日期组件
const year = date.getFullYear();    // 2024
const month = date.getMonth() + 1;  // 7(注意月份从0开始)
const day = date.getDate();         // 25
const hours = date.getHours();      // 14
const minutes = date.getMinutes();  // 30
// 基础拼接格式
const basicFormat = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
// 输出:2024-07-25

自定义格式化函数(推荐方案)

function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
  const pad = (n) => n.toString().padStart(2, '0');
  return format
    .replace(/YYYY/g, date.getFullYear())
    .replace(/MM/g, pad(date.getMonth() + 1))
    .replace(/DD/g, pad(date.getDate()))
    .replace(/HH/g, pad(date.getHours()))
    .replace(/mm/g, pad(date.getMinutes()))
    .replace(/ss/g, pad(date.getSeconds()));
}
// 使用示例
const now = new Date();
console.log(formatDate(now)); // 2024-07-25 14:30:45
console.log(formatDate(now, 'YYYY年MM月DD日')); // 2024年07月25日

国际化API方案

const date = new Date();
// 日期格式
console.log(
  new Intl.DateTimeFormat('zh-CN', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit'
  }).format(date)
); // 2024/07/25
// 完整日期时间
console.log(
  new Intl.DateTimeFormat('zh-CN', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    hour12: false
  }).format(date)
); // 2024/07/25 14:30:45

第三方库方案

  1. moment.js(传统方案)

    date格式化js

    moment().format('YYYY-MM-DD HH:mm:ss'); // 2024-07-25 14:30:45
  2. date-fns(现代轻量方案)

    import { format } from 'date-fns';

format(new Date(), ‘yyyy-MM-dd HH:mm:ss’); // 2024-07-25 14:30:45

date格式化js

### 五、模板扩展方案
```javascript
Date.prototype.format = function(pattern = 'YYYY-MM-DD') {
  const pad = n => n.toString().padStart(2, '0');
  return pattern
    .replace('YYYY', this.getFullYear())
    .replace('MM', pad(this.getMonth() + 1))
    .replace('DD', pad(this.getDate()))
    .replace('HH', pad(this.getHours()))
    .replace('mm', pad(this.getMinutes()))
    .replace('ss', pad(this.getSeconds()));
};
// 使用示例
new Date().format('YYYY/MM/DD HH:mm'); // 2024/07/25 14:30

注意事项:

  1. 原生Date对象处理时区需谨慎
  2. 修改原型方法可能引发兼容性问题
  3. 生产环境建议使用成熟的第三方库
  4. 注意月份索引从0开始的特殊处理

参考资料:

  • MDN Date文档
  • Moment.js官方文档
  • date-fns格式化文档

通过上述方法,开发者可以根据项目需求灵活选择最适合的日期格式化方案,简单项目推荐自定义函数,复杂场景建议使用date-fns等现代库,既能保证功能完善,又有利于代码维护。

date格式化js