JavaScript日期格式转换求助:转为指定格式及截断toISOString后缀
日期格式转换解决方案
嘿,我来帮你搞定这几个日期格式的问题,直接上实用的代码和解释:
1. 将new Date()转换为2-13-2018格式(月-日-年,无前置零)
你可以自己封装一个简单的函数,手动提取月份、日期和年份,然后按格式拼接:
function formatDate1(date) { const month = date.getMonth() + 1; // 月份从0开始,所以加1 const day = date.getDate(); const year = date.getFullYear(); return `${month}-${day}-${year}`; } // 使用示例 const currentDate = new Date(); console.log(formatDate1(currentDate)); // 输出类似 "2-13-2024"
2. 将Sat Apr 28 2018 00:00:00 GMT-0600 (MDT)转换为4/28/2018格式(月/日/年,无前置零)
同样的思路,提取对应部分后用/分隔:
function formatDate2(date) { const month = date.getMonth() + 1; const day = date.getDate(); const year = date.getFullYear(); return `${month}/${day}/${year}`; } // 使用示例 const dateStr = "Sat Apr 28 2018 00:00:00 GMT-0600 (MDT)"; const targetDate = new Date(dateStr); console.log(formatDate2(targetDate)); // 输出 "4/28/2018"
3. 去除toISOString()结果的末尾部分
toISOString()返回的是标准UTC格式的字符串,如果你只想保留日期部分(比如2018-04-28),可以用字符串的slice()方法截取前10位;如果需要保留到时分秒(比如2018-04-28T06:00:00),就截取前19位:
const date = new Date("Sat Apr 28 2018 00:00:00 GMT-0600 (MDT)"); const isoDateOnly = date.toISOString().slice(0, 10); // "2018-04-28" const isoDateTime = date.toISOString().slice(0, 19); // "2018-04-28T06:00:00" console.log(isoDateOnly); console.log(isoDateTime);
另外要注意:toISOString()会把本地时间转成UTC时间,所以你看到的日期和原日期可能有差异(比如原日期是4月28日凌晨0点MDT,转成UTC就是当天6点,所以ISO字符串的日期还是4月28日,你的例子里显示2018-04-26可能是输入有误哦)。
内容的提问来源于stack exchange,提问作者yabna
相关产品推荐
相关产品推荐

