js实现时间转换
时间戳转换为日期格式
使用 Date 对象将时间戳转换为可读日期:
const timestamp = 1625097600000; // 示例时间戳
const date = new Date(timestamp);
console.log(date.toLocaleString()); // 本地化日期时间格式
console.log(date.toISOString()); // ISO 8601格式(UTC时间)
通过 toLocaleString() 可指定格式参数:
date.toLocaleString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit'
});
日期字符串转换为时间戳
使用 Date.parse() 或 getTime():
const dateStr = '2023-01-15';
const timestamp1 = Date.parse(dateStr); // 直接解析字符串
const timestamp2 = new Date(dateStr).getTime(); // 通过Date对象获取
console.log(timestamp1, timestamp2);
注意:日期字符串需符合标准格式(如 YYYY-MM-DD),否则结果可能为 NaN。
自定义时间格式化
手动拼接日期组件:
function formatDate(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
console.log(formatDate(new Date())); // 输出如 "2023-06-20"
相对时间计算(如“X天前”)
利用时间差计算相对时间:
function getRelativeTime(timestamp) {
const now = new Date();
const diff = now - new Date(timestamp);
const days = Math.floor(diff / (1000 * 60 * 60 * 24));
return days > 0 ? `${days}天前` : '今天';
}
console.log(getRelativeTime(Date.now() - 86400000)); // 输出"1天前"
使用第三方库
推荐使用 moment.js 或 date-fns 简化操作:
// 使用moment.js
const moment = require('moment');
console.log(moment().format('YYYY-MM-DD HH:mm:ss'));
// 使用date-fns
const { format } = require('date-fns');
console.log(format(new Date(), 'yyyy-MM-dd'));
注意:moment.js 已进入维护模式,新项目建议优先选择 date-fns。







