js实现时间转换
时间戳转日期字符串
使用 Date 对象和内置方法转换时间戳为可读格式:
const timestamp = 1625097600000;
const date = new Date(timestamp);
const formattedDate = date.toLocaleString(); // 本地化日期时间格式
// 或自定义格式
const customFormat = `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2,'0')}-${date.getDate().toString().padStart(2,'0')}`;
日期字符串转时间戳
通过 Date.parse() 或构造函数获取时间戳:

const dateStr = '2023-06-30';
const timestamp1 = Date.parse(dateStr);
const timestamp2 = new Date(dateStr).getTime();
相对时间计算
计算时间差并转换为人类可读格式:
function formatRelativeTime(timestamp) {
const now = Date.now();
const diff = now - timestamp;
const minute = 60 * 1000;
const hour = minute * 60;
if (diff < minute) return '刚刚';
if (diff < hour) return `${Math.floor(diff/minute)}分钟前`;
return `${Math.floor(diff/hour)}小时前`;
}
时区转换
使用 toLocaleString 的选项参数处理时区:

const date = new Date();
const options = {
timeZone: 'Asia/Shanghai',
year: 'numeric',
month: '2-digit',
day: '2-digit'
};
const chinaTime = date.toLocaleString('zh-CN', options);
第三方库推荐
对于复杂的时间操作,推荐使用以下库:
- moment.js(已停止维护但广泛使用)
- date-fns(模块化轻量方案)
- day.js(moment.js的现代替代品)
// day.js示例
import dayjs from 'dayjs';
dayjs().format('YYYY-MM-DD HH:mm:ss');
dayjs(1625097600000).fromNow();
性能优化技巧
处理大量时间转换时:
- 避免在循环中重复创建
Date对象 - 对频繁使用的格式进行缓存
- 使用整数运算代替字符串操作






