2013-06-04 90 views
2

我需要以排除离线模式的时间间隔的方式获取时间间隔。让我在时间线上解释你。如何计算时间间隔

例子:

A: |---------------------------------------------------------------------------| 
B:  |----|     |-------------| 
C:           |--------------| 
D: |===| |====================|      |====================| 

`A` is the time line. 
`B` is a offline time of `B` 
`C` is a offline time of `C` notice that they are overlapping with `B` 
`D` is the time to be billed. 

所有我有时间戳。我用尽了所有的解决方案。我想知道有没有人可以指导我。或者可以建议我是否有其他解决方法。

谢谢。

+0

你需要输出什么? –

+0

“16小时15分钟”的时间间隔 –

回答

2
  1. 暂时排序时间戳;
  2. 保持“总离线时间”累加器和一个整数计数器;
  3. 一一浏览事件列表;
  4. 如果计数器当前为零,则将当前时间戳和先前时间戳的差值添加到累加器;
  5. 如果当前事件是“脱机”,则增加计数器;否则减少计数器。

这应该给你在累加器的适当时间。