将设备读数连接成JSON对象 - Javascript

3

我在现场有一些设备,它们以会话的形式将读数发送到数据库。这些会话具有开始时间、结束时间和会话时间值(指会话持续时间)。当我调用数据库(MySQL)时,它会将每个设备在我请求的特定月份内的每个会话的开始时间、结束时间和持续时间发送回给我(例如,我可以发送2018年12月的所有会话)。这是数据库返回给我的内容:

DeviceUID: xxx-xxx-xxx
Start Date: 2018-12-10T17:12:31.000Z
End Date: 2018-12-10T21:32:12.000Z <- I convert this to YY:MM:DD HH:mm:ss
Duration: 16237312                 <- This is a value in seconds

我想要做的是创建一个JSON对象,其中每个月的每一天都有一个条目,并且该天的所有会话的总持续时间有一个值。请注意,每天应该只有一个条目,这个条目汇总了当天的所有持续时间。请参见下面的示例:
{
  "2018-12-01": "02:12:54",   <-- duration in HH:mm:ss
  "2018-12-02": "01:43:52",
  ...
}

我目前的代码可以通过MySQL数据库中接收到的行进行for each循环,但是我不确定如何处理每天的持续时间总和以及如何将其适当地转换为JSON格式。你能帮我吗?
注意:我只将日期视为结束日期。因此,如果一个会话从2018年12月1日开始,到2018年12月2日结束,我只会将该会话的持续时间添加到2018年12月2日的值中。

预期的输出已经在上面的代码窗口中捕获。那是JSON结构。 - Cornel Verster
请问您能否提供本月的示例日期,并且附上预期的输出结果? - Just code
我们需要MySQL的输出对象。使用https://momentjs.com可以轻松进行时间操作。 - Rashomon
1个回答

2

我不确定你的代码库是什么样子,但这些是你需要采取的步骤:

  • 将对象命名为 data,并将对象中第一个键命名为 date

  • 再命名第二个字段为duration

  • 将日期设置为用户请求的日期。

  • 在您的 for each 循环中,计算每台设备的结束时间和开始时间之间的差异。

我尽力理解了你的问题,从我的理解来看,您需要获取所有设备在会话期间的总时间。

因此:

  • 通过将其设置为 0 来初始化 duration
  • 然后,在 for each 中,将每个设备的结束时间和开始时间之间的差异添加到 duration 中。
  • 将对象返回给用户。

希望这可以帮助到你!


嗨,感谢您的回答!我已经得到了以秒为单位计算的持续时间,我只需要将其转换为HH:mm:ss。对我来说真正的问题是如何通过for each循环遍历并将在同一天发生的多个持续时间添加到单个条目/总和中,并将其显示为单个条目。 - Cornel Verster
你正在处理数据库,对吧?这个对象是独立的,因此你需要在 for each 外部从零开始构建它。在 for each 内部,你从数据库数据中获取你的会话持续时间,并将其添加到在 for each 之外定义的对象中。然后,在 for each 之后,你返回该对象。 - Cyrus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接