проблема смещения часового пояса с toIsoString: плохо конвертирует объект даты - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь установить дату, которая берет начало 2020 года с javascript и преобразовать ее в isoString; проблема в том, что я всегда получал такую ​​дату: например, «2019-12-31T23: 00: 00.000Z» !!

  start: Date =  new Date(new Date().getFullYear(), 0, 1);

как установить дату в следующем формате: «2020-01- 01T23: 00: 01.000Z "

1 Ответ

1 голос
/ 03 мая 2020

Дата, создаваемая new Date(), учитывает смещение часового пояса хоста, метод toISOString - это UT C, поэтому, если хост не установлен в UT C, будет разница равно смещению часового пояса хоста. В операторе это +01: 00.

Если вы хотите, чтобы начало года было UT C, то сначала нужно сгенерировать значение времени как UT C, а затем использовать его для даты:

// Get the current UTC year
let year = new Date().getUTCFullYear();
// Create a Date avoiding the local offset
let d = new Date(Date.UTC(year, 0, 1));
// Get a UTC timestamp
console.log(d.toISOString());

Если, с другой стороны, вам нужна метка времени ISO 8601 с локальным смещением, а не UT C, что-то вроде 2020-01-01T00: 00: 00.000+ 02:00, вам придется сделать это самостоятельно или использовать библиотеку (за это , благодаря Matt JP ), см. Как отформатировать JavaScript дата .

...