You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何将毫秒数转换为指定格式的本地日期时间

在Node.js中将毫秒时间戳转换为指定本地时间格式

嘿,这个需求其实用Node.js原生API就能轻松实现,不用额外装第三方库,下面给你两种靠谱的方案:

方案一:手动拼接日期组件(兼容性拉满,适合所有Node.js版本)

这种方法通过Date对象的方法提取各个时间部分,再拼接成你要的格式,好处是不依赖任何新特性,老版本Node.js也能跑:

const timestamp = 1525520235000;
const targetDate = new Date(timestamp);

// 定义星期和月份的英文缩写,注意顺序要对应Date对象返回的索引
const weekdayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

// 提取各个时间部分,用padStart保证两位数格式
const weekday = weekdayNames[targetDate.getDay()];
const month = monthNames[targetDate.getMonth()];
const day = String(targetDate.getDate()).padStart(2, '0');
const year = targetDate.getFullYear();
const hours = String(targetDate.getHours()).padStart(2, '0');
const minutes = String(targetDate.getMinutes()).padStart(2, '0');
const seconds = String(targetDate.getSeconds()).padStart(2, '0');

// 拼接成目标格式
const formattedTime = `${weekday} ${month} ${day} ${year} ${hours}:${minutes}:${seconds}`;
console.log(formattedTime); // 输出:Sat May 05 2018 17:22:15

方案二:使用Intl.DateTimeFormat(更优雅,推荐Node.js v12+)

如果你的Node.js版本比较新(v12及以上),用Intl.DateTimeFormat来格式化会更省心,不需要手动维护星期和月份的数组,还能灵活调整格式细节:

const timestamp = 1525520235000;
const targetDate = new Date(timestamp);

// 创建格式化器,指定语言为英文,设置各个部分的显示规则
const dateFormatter = new Intl.DateTimeFormat('en-US', {
  weekday: 'short', // 星期缩写(Sat)
  month: 'short', // 月份缩写(May)
  day: '2-digit', // 两位数日期(05)
  year: 'numeric', // 四位年份(2018)
  hour: '2-digit', // 两位数小时(17)
  minute: '2-digit', // 两位数分钟(22)
  second: '2-digit', // 两位数秒数(15)
  hour12: false, // 使用24小时制
  timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone // 自动适配本地时区
});

// 提取格式化后的各个部分,调整顺序为目标格式
const formatParts = dateFormatter.formatToParts(targetDate);
const partMap = {};
formatParts.forEach(part => {
  partMap[part.type] = part.value;
});

const formattedTime = `${partMap.weekday} ${partMap.month} ${partMap.day} ${partMap.year} ${partMap.hour}:${partMap.minute}:${partMap.second}`;
console.log(formattedTime); // 输出:Sat May 05 2018 17:22:15

小提醒

  • 两种方案都是基于本地时区转换的,会自动适配当前运行环境的时区设置;
  • Date对象的getDay()返回0(周日)到6(周六),getMonth()返回0(一月)到11(十二月),方案一里的数组顺序可别搞反啦~

内容的提问来源于stack exchange,提问作者theanilpaudel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:36:40