微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当用户状态从活动变为离开时,从一系列 UTC 时间戳标记创建时间范围?

如何解决当用户状态从活动变为离开时,从一系列 UTC 时间戳标记创建时间范围?

我有一系列 json 对象,每个对象都包含特定用户发生事件的时间戳。 JSON 对象 presence 可以是 activeaway

我需要找到特定日期的最早 active 时间,然后找到在此时间之后出现的第一个 away 事件,丢弃这 2 个之间的“活动”(或离开)事件时间,并使用它为该特定时间范围创建开始和结束时间。然后我需要继续这样做,直到我拥有当天的所有时间范围。返回的 json 应该是包含当天所有开始(活动)和结束(离开)时间的对象列表。

所以有了这个数据:

[
    {
        "id": "U018ZG0EPK5","presence": "away","timestamp": "2021-05-27T08:05:55.998Z","_id": "378c61eb7c964377be66d8653bc96060"
    },{
        "id": "U018ZG0EPK5","presence": "active","timestamp": "2021-05-27T15:07:28.222Z","_id": "852fe2a64dc948a481b0f416fee627fb"
    },"timestamp": "2021-05-27T15:46:43.319Z","_id": "4b986df1d71a42c99ee5b153fe2e45ea"
    },"timestamp": "2021-05-27T16:25:00.008Z","_id": "bbd6c72501b545e8ac0559b23d3b00fa"
    },"timestamp": "2021-05-27T16:31:02.096Z","_id": "6f4e633d8f024752a2f36bdb2ca9b42b"
    },"timestamp": "2021-05-27T16:32:37.401Z","_id": "dfa333d71fd34a57964aa89c1c8ab23c"
    },"timestamp": "2021-05-27T16:32:47.237Z","_id": "9723e47ae6544795bc1a6b99a7df11de"
    },"timestamp": "2021-05-27T16:34:14.174Z","_id": "3476ebc918404867823c5802638a6de8"
    },"timestamp": "2021-05-27T16:34:27.108Z","_id": "5303930cdfe84e8f87099a0300757762"
    },"timestamp": "2021-05-27T16:34:41.174Z","_id": "c41623fa795444799de56508bc1e3b76"
    },"timestamp": "2021-05-27T16:34:49.938Z","_id": "0aa6bd90ad0c447383da1b033e8566bf"
    }
]

我想要一个输出

[{
 id: ...,start: 'May 27,2021 3:07:28 pm',end: 'May 27,2021 4:34:14 pm'
},{
 id: ...,2021 4:34:27 pm'
 end: 'present'
}]

这是我到目前为止所拥有的,但需要一些关于如何按照我需要的方式过滤的指导。有没有一种算法可以查找这样的情况?


//Had to shrink timestamp log to post this
var timelogs = [
    {
       "id":"UAP25QG0Z","presence":"active","timestamp":"2021-05-26T23:33:09.614Z","_id":"468ebb4ada204c3d82fb19ec5807d1a4"
    },{
       "id":"U01BZ4L5XUL","presence":"away","timestamp":"2021-05-26T23:33:09.616Z","_id":"ed1f733b81bb4dea9d7832c657f9af39"
    },{
       "id":"U01T9AUA406","timestamp":"2021-05-26T23:33:09.617Z","_id":"5d085f256b4446aea6c08a8de6a85848"
    },{
       "id":"UAPC6K6EQ","timestamp":"2021-05-26T23:33:09.618Z","_id":"0ddd373bcb164958ae5769473d86088f"
    },{
       "id":"U01NHH1NAFR","timestamp":"2021-05-26T23:33:09.619Z","_id":"518f4f0bf9fc449f8f9445f81839662d"
    },{
       "id":"U020N0PVA4V","timestamp":"2021-05-26T23:33:09.620Z","_id":"2d9850a419ec429fa47a24104df041a3"
    },{
       "id":"U0219B9DYKH","timestamp":"2021-05-26T23:33:09.621Z","_id":"3cd4c7c2dbaf499c966cd9cc0c1e57c4"
    },{
       "id":"U018ZG0EPK5","timestamp":"2021-05-26T23:33:09.622Z","_id":"fc912f40ce0441ab8d60c34ac210667f"
    },{
       "id":"U0222NP4C9F","timestamp":"2021-05-26T23:33:09.623Z","_id":"52326de9421845cfb5067731d97f6913"
    },{
       "id":"U01U3QTP6BF","timestamp":"2021-05-26T23:33:09.624Z","_id":"5b38225d616845b8986898b202029499"
    },{
       "id":"UAPPU006M","timestamp":"2021-05-26T23:33:09.625Z","_id":"540b7fb2fe13433abba868a8b54e0f91"
    },{
       "id":"UAP25QG0Z","timestamp":"2021-05-26T23:42:59.389Z","_id":"4bb22e409605419e9ec260f12fde52e0"
    },"timestamp":"2021-05-26T23:42:59.391Z","_id":"ed595f05acb74d9eb9b5c89b05201697"
    },"timestamp":"2021-05-26T23:42:59.392Z","_id":"0790ee2165864101b86347de02357fb0"
    },"timestamp":"2021-05-26T23:42:59.393Z","_id":"1a50d455f15e4050bedc49ff6dd2189d"
    },"timestamp":"2021-05-26T23:42:59.394Z","_id":"00ad362a3b554a8c9a81c8cdafadba6a"
    },"timestamp":"2021-05-26T23:42:59.395Z","_id":"0c7a6dbe824d484b89266092aabf20c8"
    },"timestamp":"2021-05-26T23:42:59.396Z","_id":"9cbd3ab509f7421c9a2ef4c52db8cc36"
    },"timestamp":"2021-05-26T23:42:59.397Z","_id":"982a088c4fb7407a945cf6da14de35ed"
    },"_id":"7551d3bf6a014a07995e9da25e578095"
    },"timestamp":"2021-05-26T23:42:59.398Z","_id":"886554626c894a92a065d8692c4bb044"
    },"timestamp":"2021-05-26T23:42:59.400Z","_id":"3ff4ba5bcd0f45298740066e640aeb89"
    },"timestamp":"2021-05-26T23:43:53.656Z","_id":"dfb3e6031b364b5ca7653873f3f71405"
    },"timestamp":"2021-05-26T23:43:53.659Z","_id":"159ef382e8e448fa92cc792b2111afa9"
    },"timestamp":"2021-05-26T23:43:53.661Z","_id":"1aba4e320e7b4fe695ae6277b1a2b529"
    },"timestamp":"2021-05-26T23:43:53.662Z","_id":"38fe988b2c2343d0bc565d9bb55bdff5"
    },"timestamp":"2021-05-26T23:43:53.663Z","_id":"85b112d89c9b4f0986b5ada1b6036217"
    },"timestamp":"2021-05-26T23:43:53.664Z","_id":"af5e866bca1e49bd9ca509fe5095005c"
    },"timestamp":"2021-05-26T23:43:53.665Z","_id":"cb5c1b1b3ba347b78e53bbd5c63640ab"
    },"timestamp":"2021-05-26T23:43:53.666Z","_id":"fdcdb6e00f1f4dab9431aead5b91f20d"
    },"timestamp":"2021-05-26T23:43:53.667Z","_id":"9d1fb7d57c984974b4f3588a2e0123da"
    },"timestamp":"2021-05-26T23:43:53.668Z","_id":"c0ea440664f84a88a44d57c1ec4d0e45"
    },"timestamp":"2021-05-26T23:43:53.669Z","_id":"d32289d332174543b6d46e5ee8be9439"
    },"timestamp":"2021-05-27T00:25:15.958Z","_id":"a1e150e1aadb445c96dd7cd4b60d7bd3"
    },"timestamp":"2021-05-27T00:35:55.748Z","_id":"6de94899ee6941d0ac07198192b7ecc5"
    },"timestamp":"2021-05-27T01:00:33.508Z","_id":"58044d9656054d859923e0c561ab4ecd"
    },"timestamp":"2021-05-27T01:05:44.047Z","_id":"cc4ceb0986934b60a4550e4ae1cb6b8b"
    },"timestamp":"2021-05-27T01:40:36.044Z","_id":"14c1ed5133934ac59b66ac69b67adabc"
    },"timestamp":"2021-05-27T01:42:00.118Z","_id":"c92c54979fb94f6cb66ce302033c661a"
    },"timestamp":"2021-05-27T01:46:13.391Z","_id":"74a569a6b48e434f8bb940296acce969"
    },"timestamp":"2021-05-27T01:48:25.511Z","_id":"00945f5d7777456badeaf1df09eb2a1c"
    },"timestamp":"2021-05-27T02:18:46.380Z","_id":"0f5225ca5f2944a5a7f783b6b6717355"
    },"timestamp":"2021-05-27T03:17:50.476Z","_id":"33647bc0a0f147b1a6e46a06ab748f0c"
    },"timestamp":"2021-05-27T03:35:18.282Z","_id":"7609c75aa9634151b9e1d37b997ff14f"
    },"timestamp":"2021-05-27T03:35:55.309Z","_id":"91fe6b3a42da4e70b7842f35d939a7dc"
    },"timestamp":"2021-05-27T03:39:42.635Z","_id":"2b4e4b1b79a9432b842594c232499e0f"
    },"timestamp":"2021-05-27T03:40:06.674Z","_id":"bfd84db490f6443db95e5919a7fbefb0"
    },"timestamp":"2021-05-27T03:52:40.161Z","_id":"578d7c81792548269e171384fd7c1a38"
    },"timestamp":"2021-05-27T03:53:03.200Z","_id":"d030c48923604066a8d2ee58289b77a0"
    },"timestamp":"2021-05-27T03:53:04.129Z","_id":"afd4b4cdd8844e90b44d44e6577fb39c"
    },"timestamp":"2021-05-27T03:53:44.204Z","_id":"ef60766efaff41198c5a4d47a1e6521e"
    },"timestamp":"2021-05-27T04:02:57.514Z","_id":"3ea0c22e6f90425fa627ec524ca92e15"
    },"timestamp":"2021-05-27T04:21:14.262Z","_id":"088cc45f06ce4ad082bd92b8859dac65"
    },"timestamp":"2021-05-27T04:21:16.302Z","_id":"b7b733ee67ca4704897326980007e171"
    },"timestamp":"2021-05-27T06:28:26.887Z","_id":"210728c8348742bc816e240054aa6866"
    },"timestamp":"2021-05-27T06:35:00.018Z","_id":"b12f6a4b49e048a29669d66c1e0cc0a4"
    },"timestamp":"2021-05-27T06:36:00.119Z","_id":"af6b9969824a49f5b995107236e7d2ee"
    },"timestamp":"2021-05-27T07:54:40.892Z","_id":"347abf356cf144fba448edf63b07df5b"
    },"timestamp":"2021-05-27T08:05:55.986Z","_id":"23ae57caa3a44f749c4e0bcd7943ecb1"
    },"timestamp":"2021-05-27T08:05:55.989Z","_id":"313bd441b80e459ab7023315b0193b52"
    },"timestamp":"2021-05-27T08:05:55.991Z","_id":"9a2ceaf0ee36461b8c15bc6afa2ba7bc"
    },"timestamp":"2021-05-27T08:05:55.992Z","_id":"3a7945e4ffa14f66a88cdb881b9d1846"
    },"timestamp":"2021-05-27T08:05:55.993Z","_id":"a2520c4f3b40455e9d2d41874ffb72b4"
    }] 

console.log(timelogs);

let userid = "U018ZG0EPK5";
let day = dayjs();
console.log(day);
let test = day.subtract(1,"day");
console.log(test);

let userDateTimelogs = timelogs.filter((timelog) => {
   let isUser = timelog.id === userid
   let isDay = day.isSame(timelog.timestamp,"day");
   return isDay && isUser;
});

let sortedUserTimelogs = userDateTimelogs.sort((a,b) => {
   return a.timestamp - b.timestamp;
});

console.log(sortedUserTimelogs);
<html>
<head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/browserfs/2.0.0/browserfs.min.js" integrity="sha512-mz0EI+Ay1uIJP7rZEX8C/JlTAcHRIQ8Sny4vxmmj8MSzDJgG9NxxY2pUmogv1lO7imFIFMyjjCzEXEywNgaUdQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.10.5/dayjs.min.js" integrity="sha512-n6mJ6AqoohFfbgx3x7N162B/zRNs5x8uvsstlHC+LCvqwKW7oiucE07Ehatg62ybx6Vo1ctaZwm/4sSRUTSIQA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="./script.js"></script>
</head>
<body>

</body>
</html>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。