преобразование метки времени в один массив

#javascript #google-apps-script #google-sheets

Вопрос:

Запуск в скрипте приложения, Google sheet. Я получаю метку времени из API и возвращаю этот результат:

 [[1.6370611672429312E18], [1.63706107263277082E18]],   

Я делаю этот код и работаю нормально, но проблема не в массиве, он мне нужен каждый раз в массиве:

 const timestamps = [[1.6370611672429312E18], [1.63706107263277082E18]]; for (let i = 0; i lt; timestamps.length; i  ) {  const timestamp = new Date(timestamps[i][0] / 1000000);  const convertDate = Utilities.formatDate(timestamp, "GMT", "MM-dd-yyyy HH:mm:ss"); }  

в результате получается:

 1:52:34 PM Info 11-16-2021 12:52:33 1:52:34 PM Info 11-16-2021 12:52:33 1:52:34 PM Info 11-16-2021 12:52:33  

Мне нужны такие результаты: 1:52:34 PM Info [[11-16-2021 12:52:33], [11-16-2021 12:50:10]]

чтобы поместить в лист по этому коду: sheet.getRange(1,1,convertDate .length, convertDate [0].length).setValues(convertDate );

Ответ №1:

 const timestamps = [[1.6370611672429312E18], [1.63706107263277082E18]]; let convertedDates = []; // Create an array to store the converted dates for (let i = 0; i lt; timestamps.length; i  ) {  const timestamp = new Date(timestamps[i][0] / 1000000);  const convertedDate = Utilities.formatDate(timestamp, "GMT", "MM-dd-yyyy HH:mm:ss");  convertedDates.push([convertedDate]); // Wrap each in [] because this will be printed as a single column }  const sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME); sheet.getRange(1, 1, convertedDates.length, convertedDates[0].length).setValues(convertedDates);  

Комментарии:

1. это работа , но если я изменю время массива на [[1637575268], [1637575268], [1637575268]] «не работает», дайте мне время 1/1/1970 0:27:17 , почему?

Ответ №2:

 const timestamps = [[1.6370611672429312E18], [1.63706107263277082E18]]; const toISOStringWithTimezone = date =gt; {  const pad = n =gt; `${Math.floor(Math.abs(n))}`.padStart(2, '0');  return date.getFullYear()    '-'   pad(date.getMonth()   1)    '-'   pad(date.getDate())    ' '   pad(date.getHours())    ':'   pad(date.getMinutes())    ':'   pad(date.getSeconds()) }; const hasArrDate = (data = []) =gt; {  return data.flat().map(v =gt; toISOStringWithTimezone(new Date(v / 1000000))) } console.log(hasArrDate(timestamps));