如何从JavaScript Date对象获取形如12:48, Oct 30的当前日期时间格式?
好问题!要把JavaScript的Date对象转换成12:48, Oct 30这种格式,有两种实用的方式,我分别给你拆解清楚:
方法一:手动提取日期时间组件(兼容所有浏览器)
如果需要兼容一些老版本浏览器,手动提取各个时间组件是最稳妥的方式。步骤如下:
- 处理12小时制的时间:需要把24小时制的小时转换为12小时制,同时处理0点(转为12)和12点(保持12)的特殊情况。
- 补零分钟数:确保分钟数始终是两位数字(比如9分钟显示为
09)。 - 获取月份缩写:定义一个包含月份缩写的数组,通过
getMonth()(返回0-11的数字)索引取值。 - 拼接最终格式:把时间、逗号、月份缩写和日期组合起来。
完整代码示例:
function formatDate(date) { // 处理12小时制小时 const hours = date.getHours(); const twelveHour = hours % 12 || 12; // 0点转为12,其他取模12 // 补零分钟 const minutes = String(date.getMinutes()).padStart(2, '0'); // 月份缩写数组 const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; const month = monthAbbrs[date.getMonth()]; // 日期 const day = date.getDate(); return `${twelveHour}:${minutes}, ${month} ${day}`; } // 使用示例:基于当前时间 const now = new Date(); console.log(formatDate(now)); // 输出类似 "12:48, Oct 30"
方法二:使用Intl.DateTimeFormat(现代浏览器推荐)
现代浏览器支持的Intl.DateTimeFormat API可以更简洁地处理日期格式化,无需手动维护月份数组或处理时间转换。唯一需要注意的是,默认输出顺序是月份 日期, 时间,我们需要调整为时间, 月份 日期:
function formatDate(date) { // 配置格式化选项 const options = { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric', hour12: true }; // 先得到默认格式(如 "Oct 30, 12:48") const defaultFormatted = new Intl.DateTimeFormat('en-US', options).format(date); // 拆分并重组顺序 const [datePart, timePart] = defaultFormatted.split(', '); return `${timePart}, ${datePart}`; } // 使用示例 const now = new Date(); console.log(formatDate(now)); // 输出类似 "12:48, Oct 30"
这种方式代码更简洁,且不需要自己处理边缘情况(比如月份索引、补零逻辑),推荐在支持ES6+的环境中使用。
内容的提问来源于stack exchange,提问作者Milan Samantray
相关产品推荐
相关产品推荐

