Node.js+MySQL中如何将查询返回的日期格式化为Aug 24 2022?
问题描述
使用Node.js + MySQL开发JSON API时,查询语句使用SELECT p.*无法单独在SQL中格式化MySQL的date类型字段,直接提取date得到的是"2022-08-24T05:00:00.000Z"格式的Date对象。尝试转换为字符串后得到"Wed Aug 24 2022 00:00:00 GMT-0500 (Central Daylight Time)",需要提取出"Aug 24 2022"部分。
解决方案
方法1:使用Date内置本地化方法
直接利用JavaScript Date对象的toLocaleDateString方法,指定格式参数生成目标字符串:
var mylist = results.map(row => ({ 'date': row.date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }) }));
该方法会直接返回"Aug 24 2022"格式的结果,无需手动拼接,兼容性好。
方法2:手动提取日期各部分拼接
定义月份缩写数组,通过Date对象方法获取对应部分后拼接:
const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; var mylist = results.map(row => ({ 'date': `${monthAbbrs[row.date.getMonth()]} ${row.date.getDate()} ${row.date.getFullYear()}` }));
注意:getMonth()返回0-11的数字,对应数组的索引位置。
方法3:对toString结果分割拼接
如果坚持用字符串分割方式,可通过slice截取目标部分后拼接:
var mylist = results.map(row => ({ 'date': row.date.toString().split(' ').slice(1, 4).join(' ') }));
split(' ')按空格拆分字符串为数组,slice(1,4)提取索引1、2、3的元素(月份缩写、日期、年份),最后用join(' ')拼接成目标格式。
内容的提问来源于stack exchange,提问作者LautaroColella
相关产品推荐
相关产品推荐

