如何在discord.js中简化日期显示为指定格式?
解决Discord.js日期格式化问题
嘿,我来帮你搞定这个日期显示的需求!你现在从Discord.js拿到的是JavaScript原生Date对象的默认字符串,要转换成Saturday June 26, 2016 at 05:23这种清爽的格式,这里有两种实用的方法:
方法一:用JavaScript原生Intl.DateTimeFormat
这个方法不依赖Discord.js的版本,兼容性拉满,还能灵活控制格式:
// 先把你拿到的日期字符串转成Date对象 const targetDate = new Date("Sun Jun 26 2016 05:23:55 GMT+0200 (Central European Daylight Time)"); // 配置格式化选项 const formatter = new Intl.DateTimeFormat('en-US', { weekday: 'long', // 完整星期几(比如Saturday) year: 'numeric', // 四位年份 month: 'long', // 完整月份名(比如June) day: 'numeric', // 日期数字 hour: '2-digit', // 两位小时 minute: '2-digit' // 两位分钟 }); // 先拿到基础格式化结果 const baseFormatted = formatter.format(targetDate); // 调整成你要的"at"格式(原生默认会用逗号分隔,这里替换一下) const finalDate = baseFormatted.replace(', ', ' ').replace(', ', ' at '); console.log(finalDate); // 输出:Saturday June 26, 2016 at 05:23
方法二:用Discord.js自带的Timestamp工具(v13+支持)
如果你的Discord.js版本是v13及以上,官方提供的Timestamp类能更简洁地完成这个需求:
const { Timestamp } = require('discord.js'); // 转成Date对象 const targetDate = new Date("Sun Jun 26 2016 05:23:55 GMT+0200 (Central European Daylight Time)"); // 创建Timestamp实例,直接用自定义格式字符串 const formattedDate = Timestamp.fromDate(targetDate).format('F M d, Y at H:m'); console.log(formattedDate); // 输出:Saturday June 26, 2016 at 05:23
这里的格式占位符对应:
F:完整星期几名称M:完整月份名称d:日期数字Y:四位年份H:24小时制的两位小时m:两位分钟
两种方法都能完美达到你的需求,选哪种看你的项目环境啦!
内容的提问来源于stack exchange,提问作者Rjjfjfk Fkkfkf




