Правильно ли разбирать дату в метку времени? - PullRequest
0 голосов
/ 20 сентября 2019

enter image description here

Я работаю со скриптом приложений.

Я анализирую строки листа в объектах и ​​пытаюсь их отфильтровать по временичтобы получить самые последние записи за последний час

[{relativeRow=257.0, ME=, Index=false, FROM=1.xxx, absoluteRow=258.0, Timestamp=Fri Sep 20 14:17:50 GMT-04:00 2019, CONVERSATION=R:Yes!}, {relativeRow=256.0, ME=, Index=false, FROM=1xxx, absoluteRow=257.0, Timestamp=Fri Sep 20 12:18:00 GMT-04:00 2019, CONVERSATION=R:yes yes}, {relativeRow=255.0, ME=, Index=false, FROM=xxx, absoluteRow=256.0, Timestamp=Thu Sep 19 11:54:29 GMT-04:00 2019, CONVERSATION=R:Yes1}]

У меня есть:

var MILLIS_PER_HOUR = 1000 * 60 * 60;  // 60 MINUTES
var now = new Date()
var oneHouragoTS = now.getTime() - MILLIS_PER_HOUR;
  Logger.log(oneHouragoTS);

var pendingRows =  descending.filter(function (row) {

    Logger.log(row['Timestamp']);

var rowDate = new Date(row['Timestamp'])
var rowTS = rowDate.getTime()

Logger.log('rowTS');
Logger.log(rowTS);
    Logger.log('oneHouragoTS');
Logger.log(oneHouragoTS);



var diff = rowTS - oneHouragoTS ;


Logger.log('diff');
Logger.log(diff);

return (diff>0) 

});

Вывод:

[19-09-20 15:40:54:016 EDT] getResponsesOverLastHour
[19-09-20 15:40:54:017 EDT] 1.569004854016E12
[19-09-20 15:40:54:017 EDT] Fri Sep 20 14:17:50 GMT-04:00 2019
[19-09-20 15:40:54:018 EDT] rowTS
[19-09-20 15:40:54:018 EDT] 1.56900347E12
[19-09-20 15:40:54:019 EDT] oneHouragoTS
[19-09-20 15:40:54:019 EDT] 1.569004854016E12
[19-09-20 15:40:54:020 EDT] diff
[19-09-20 15:40:54:020 EDT] -1384016.0
[19-09-20 15:40:54:020 EDT] Fri Sep 20 12:18:00 GMT-04:00 2019
[19-09-20 15:40:54:021 EDT] rowTS
[19-09-20 15:40:54:021 EDT] 1.56899628E12

Я запускаю это 30-40 минут после создания строки, поэтому я предполагаю, что разница будет положительной, и строка вернется, однако разница будет отрицательной, и фильтрация строк, созданных в течение 1 часа, возвращает пустой массив

Как я могуисправить это?

1 Ответ

2 голосов
/ 21 сентября 2019

Дата в вашем листе: пт. 20 сентября 14:17:50 GMT-04: 00 2019

Может быть проанализировано с помощью new Date("Fri Sep 20 14:17:50 GMT-04:00 2019")

console.log(new Date("Fri Sep 20 14:17:50 GMT-04:00 2019"))

Ваш расчет часа назад также верен:

var oneHourAgo = Date.now() - (60*60*1000); // shorter version

console.log(oneHourAgo, new Date(oneHourAgo));

Но вы не запускаете его через 30-40 минут после его создания. Вы запускаете его через 1 час и 24 минуты : 19-09-20 15: 40: 54: 016 ПО ВОСТОЧНОМУ ВРЕМЕНИ.

Поэтому вы получаете отрицательные значения, так как они старше одного часа.

Могу ли я предложить оптимизацию вашего фильтра?

var now = Date.now();

var pendingRows =  descending.filter(function (row) {
  var rowTS = Date.parse(row['Timestamp']);
  var diff = now - rowTS;
  Logger.log(row['Timestamp'], rowTS, diff);
  return diff < (60*60*1000); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...