将每15分钟的时间戳拆分数据,并循环使用。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将每15分钟的时间戳拆分数据,并循环使用。相关的知识,希望对你有一定的参考价值。

我试图根据15分钟的数据进行一些计算。

我得到了这样一天的数据。

let DayData = db.sensingresults.find(
"updatedAt": 
    "$gt": ISODate("2020-06-07T00:00:00.000Z"),
    "$lte": ISODate("2020-06-08T00:00:00.000Z")
, "vitalSensing": "$exists": 1
).sort(updatedAt: 1)  

我有每个记录的时间戳值为: DayData

我想在任何一个临时数组中获取前15分钟的数据,并对其进行一些计算并保存到DB中。然后清空临时数组,加载接下来的15分钟的数据,对其进行一些计算并保存到DB中。

我知道如何进行计算和保存到DB部分。但我需要一些指导,如何获得每15分钟的数据,并在其中循环。

更详细的解释。 我的数据总是从午夜开始:2020-06-07T00:00:00.000Z这样。

这是我的高层次想法,但不知道如何继续实现。

首先将前15分钟的数据存入一个数组中。

let tempArray = [];
tempArray.push(data for > 12.0 am to <=12.15) // after completing for loop on tempArray, come here and load next set of data. 

    for (let i = 0; i < tempArray.length; i++) 
        ... perform my calculation
        ... save to db
     

然后清空数组tempArray = []并加载下一组数据,即>12.15am到<=12.30am......以此类推......并执行与上面相同的操作(做一些计算并保存到DB中)。

我需要对整个过程进行迭代。DayData 以15分钟为单位。

答案

如果我对你的问题理解正确的话(用日期+15分钟取行),你可以将日期转换为unix时间,并添加15分钟(900000毫秒),然后将其转换回来用于你的查询。

let unixTime = Date.parse(ISOString) + 900000
let date = new Date(unixTime).toISOString()

编辑:你可以通过过滤,输出一个15分钟间隔内所有对象的数组。

tempArray = DayData.filter(e => Date.parse(e.updatedAt) % 900000 === 0).map(e => e)

以上是关于将每15分钟的时间戳拆分数据,并循环使用。的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 中基于时间戳的移动平均线

将行拆分为 m 个部分并构建每个部分的平均值 [SQLite]

如果确切时间不可用,如何根据最后可用的时间戳返回值?

根据python中训练和测试集中的时间戳为每个用户拆分数据集

在流分析中将时间戳拆分为单独的列,以便在 Power BI 中进行进一步筛选

按时间戳写入分区数据