我正在开发一个简单的时间跟踪应用程序,试图弄清楚将常规时间预订组织为工期的最有效方法是什么。 我有一个Timestamp类的Objekts列表,如下所示:
public class Timestamp {
int status;
Date date;
}
状态转换为:
private static final int OUT = 0;
private static final int IN = 1;
private static final int BREAK = 2;
持续时间是从状态为1的时间戳到状态为0或2的时间戳计算的。 我的考虑是按日期排序列表,然后删除所有无用的时间戳,这意味着所有具有重复状态的时间戳。有什么想法吗?
更新:
试图弄清楚我的意思...首先,我将描述应用程序中的事件顺序:
1.用户输入/输出/中断。
2.在我的数据库中创建一个条目。在其中创建条目的表中,除其他外,有一个列,用于用户拨入/拨出的日期时间和一列“状态”。在“状态”(Status)列中,我存储用户是否计时,开始休息还是计时结束,并带有数字值,在此示例中,0表示退出,1表示进入,2表示中断。
3.现在,我的应用程序应该计算用户工作的时间以及每天的休息时间。为简单起见,工作时间是从一天的第一个“时钟开始”到下一个“时钟结束”或从“时钟开始”到“休息”来计算的。中断时间是从第一个“中断”到下一个“时钟输入”的时间计算的。
4.然后将结果保存在另一个表中,在该表中,我保存工作时间并按天休息。
我已经写过,我的看法是:
-从表格中获取所有数据。
-为每一行创建一个我的Timestamp类的实例,并将它们放在列表中。
-删除所有我不用于计算的条目,例如在“时钟输入”-时间戳和“时钟输出”-时间戳之间重复的“时钟输入”。
-遍历列表,找到相关的时间戳,将其从列表中删除并创建持续时间。
-汇总所有持续时间,直到整天处理完毕。
-在另一列表中查询当天,直到处理完所有数据。
-将持续时间数据插入相应的表中。
您可能会想像,数据量可能会非常庞大,因此我正在寻找一种快速有效的方法来实现我的目标。希望这可以澄清一些事情。