Javascript date format like ISO but local

前端 未结 7 1466
广开言路
广开言路 2020-12-11 00:06

how do I format a javascript date like ISO format, but in local time?

with myDate.toISOString() I am getting the time as: \"2012-09-13T19:12:23.826Z\"

7条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-11 00:55

    Another method is to define a prototype on the Date object:

    Date.prototype.toLocaleISOString = function() {
      const zOffsetMs = this.getTimezoneOffset() * 60 * 1000;
      const localTimeMs = this - zOffsetMs;
      const date = new Date(localTimeMs);
      const utcOffsetHr = this.getTimezoneOffset() / 60;
      const utcOffsetSign = utcOffsetHr <= 0 ? '+' : '-';
      const utcOffsetString = utcOffsetSign + (utcOffsetHr.toString.length == 1 ? `0${utcOffsetHr}` : `${utcOffsetHr}`) + ':00';
      return date.toISOString().replace('Z', utcOffsetString);
    };
    

    And using it is as simple as:

    const date = new Date();
    console.log(date.toLocaleISOString());
    // Output: 2020-08-04T14:52:38.613-07:00
    

提交回复
热议问题