JS Конвертировать массив дат с часовым поясом в UTC или GMT + 0 - PullRequest
0 голосов
/ 03 апреля 2019

ОК. Итак, у меня есть этот плагин, который генерирует для меня массив дат.Проблема в том, что я не могу изменить этот плагин, так как он встроен в ядро ​​приложений и получает данные из центральной базы данных.

Итак, вот в чем проблема, к массиву дат применяется локальное смещение часового пояса, поэтому элементы выглядят в основномнапример:

0: Thu Apr 11 2019 00:00:00 GMT+0100 (hora de verano de Europa occidental)
1: Fri Apr 12 2019 00:00:00 GMT+0100 (hora de verano de Europa occidental)

Мне нужно передать этот массив в веб-службу (используя axios), поэтому, когда я делаю

JSON.stringify(MyArray)

Значение преобразуется во время текстового формата спримененное смещение часового пояса:

"2019-04-10T23:00:00.000Z"

Как видите, вместо отображения 00:00:00 отображается 23:00:00 и день до фактической даты, когда применяется смещение часового пояса

Есть ли обходной путь?Может быть, что-то преобразовать полный массив в GMT или сделать JSON.stringify, чтобы игнорировать часовой пояс ??

1 Ответ

0 голосов
/ 03 апреля 2019

Таким образом, допустим, у вас есть этот массив дат из JSON:

// WE ASSUME THIS IS A SAMPLE ARRAY FROM A SLICE OF YOUR JSON DATA
[
    Thu Apr 11 2019 00:00:00 GMT+0100 (hora de verano de Europa occidental),
    Fri Apr 12 2019 00:00:00 GMT+0100 (hora de verano de Europa occidental)
]

Возможно, вы захотите запустить массив в функцию map и в функции map преобразовать даты GMT в соответствующую дату (скажем, в формате UTC или что-то еще). Вот как:

// FIRST ASSIGN THE DATE ARRAY TO A VARIABLE SO YOU CAN REFERENCE IT EASILY.
const dateArray =  [
    Thu Apr 11 2019 00:00:00 GMT+0100 (hora de verano de Europa occidental),
    Fri Apr 12 2019 00:00:00 GMT+0100 (hora de verano de Europa occidental)
]; // THIS WOULD IMPLY WHATSOEVER VARIABLE HOLDS YOUR DATE ARRAY....

// TO CONVERT THE DATE TO SAY UTC OR SO, YOU COULD DO THAT WITHIN MAP LIKE SO
const utcDate  = dateArray.map((gmtDateString) => {
    const gmtDateObj  = new Date(gmtDateString);
    return gmtDateObj.toUTCString();
});  

// NOW, YOU CAN SHIP THE `utcDate` WITH AXIOS...
// YOU MAY HAVE TO CHECK IF YOU NEED TO STILL CALL `JSON.stringify(utcDate);`
...