在 javascript 中将日期转换为有线格式 (YYYY-MM-DD)

Transform date to wire format (YYYY-MM-DD) in javascript

有了这个输入:Wed Feb 03 2021 00:00:00 GMT+0200 (Eastern European Standard Time),有没有办法将其格式化为 YYYY-MM-DD,它将变成 2021-02-03

试试这个:

const date = moment(new Date('Wed Feb 03 2021 00:00:00 GMT+0200 (Eastern European Standard Time)')).format('YYYY-MM-DD');
console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous"></script>

如果时间戳包含偏移量或时区,则将时间戳解析为日期以重新格式化它很可能会产生不正确的结果。给定“2021 年 2 月 3 日星期三 00:00:00 GMT+0200(东欧标准时间)”,对于偏移量为 +1 或更小的用户,日期将为 2 月 2 日,而不是 2 月 3 日。

最可靠的方法是重新格式化字符串,例如

let timestamp = "Wed Feb 03 2021 00:00:00 GMT+0200 (Eastern European Standard Time)";

let months = [,'Jan','Feb','Mar','Apr','May','Jun',
               'Jul','Aug','Sep','Oct','Nov','Dec'];
let pad = n=>('0'+n).slice(-2);
let p = timestamp.split(' ');

console.log(`${p[3]}-${pad(months.indexOf(p[1]))}-${p[2]}`);