了解 Date.prototype.toISOString() ISO 8601 格式?

Understanding Date.prototype.toISOString() ISO 8601 format?

引自MDN

The toISOString() method returns a string in simplified extended ISO format (ISO 8601), which is always 24 or 27 characters long (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ, respectively).

  1. 什么时候返回第二种格式±YYYYYY-MM-DDTHH:mm:ss.sssZ
  2. ±YYYYYY-MM-DDTHH:mm:ss.sssZ开头的±YY是什么意思?

the spec所说,当年份在公元1年前时返回:

const d = new Date()
// Thu Feb 25 2021 14:49:43 GMT+0200 (Eastern European Standard Time)
d.setFullYear(-7731)
// -306129149405605
console.log(d.toISOString())
// "-007731-02-25T13:09:54.395Z"

或适合遥远的未来。

const d = new Date();
d.setFullYear(11931)
// 314343550183395
console.log(d.toISOString())
// "+011931-02-25T12:49:43.395Z"