【问题标题】:Concatenate device readings in JSON object - Javascript在 JSON 对象中连接设备读数 - Javascript
【发布时间】:2019-05-23 11:05:18
【问题描述】:

我在现场有设备,可以将会话格式的读数发送到数据库。这些会话具有开始时间、结束时间和会话时间值(指示会话持续了多长时间)。当我调用数据库 (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 结构。
  • 能否请您提供当月的示例日期?并添加预期的输出。
  • 我们需要 MySQL 的输出对象。 momentjs.com 可以轻松完成有时间的操作

标签: javascript mysql json date


【解决方案1】:

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

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

  • 命名第二个字段duration

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

  • 在通过每个设备的 for each 中,计算结束时间和开始时间之间的差异。

我已尽力理解您的问题,据我了解,您希望了解所有设备在会话中的总时间。

所以:

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

希望这会有所帮助!

【讨论】:

  • 您好,感谢您的回答!我已经得到了以秒为单位的计算持续时间,我只需要将其转换为 HH:mm:ss。对我来说真正的问题是我如何通过 for each 并将同一天发生的多个持续时间添加到当天的单个条目/总和,并将其显示为单个条目。
  • 您正在浏览数据库,对吗?该对象是独立的,因此您可以在 for each 之外从头开始构建它。在 for each 中,您从 db 数据中获取会话持续时间,并将其添加到在 for each 之外定义的对象中。然后,在 for each 之后,返回对象。
猜你喜欢
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
相关资源
最近更新 更多