求计算运行总时间和最后开始时间和结束时间的算法

f1696014041 2021-01-08 05:27:27
计算灯的运行总时长,和最后的开灯和关灯时间 .
说明: 每10分钟会来一条数据, 如果为true,表示当前时间点到前一个时间点是开灯的
 
@Data
public class Dat{
String date; // 当前时间
boolean flag; // 是否开灯

public Dat(String date, boolean flag) {
this.date = date;
this.flag = flag;
}
}
// 计算两个时间点的时长间隔
public int getLenTime(String start,String end){
int st = Integer.parseInt(end.substring(3, 5));
int en = Integer.parseInt(start.substring(3, 5));
int res = (en - st + 60) % 60;
return res;
}

public void test03(){
Dat dat01 = new Dat("11:00",true);
Dat dat02 = new Dat("11:10",true); //10 true表示前一时间点内到当前时间点是开灯的
Dat dat03 = new Dat("11:20",false);
Dat dat04 = new Dat("11:31",false);
Dat dat05 = new Dat("11:40",true); //9
Dat dat06 = new Dat("11:50",true); //10
Dat dat07 = new Dat("12:00",true); //10
Dat dat08 = new Dat("12:11",true); //11
Dat dat09 = new Dat("12:20",false);
Dat dat10 = new Dat("12:30",false);

// dat01,dat02,dat03,dat04,dat05,dat06,dat07,dat08,dat09,dat10
List<Dat> dats = Lists.newArrayList(dat01,dat02,dat03,dat04,dat05,dat06,dat07,dat08,dat09,dat10);

// 最后需要的结果:
// 求灯运行时间: 50
// 求最后的灯运行时间: 11:31 到 12:11
...全文
1761 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
老葫芦2021 2021-01-09
  • 打赏
  • 举报
回复
好,和我的需求差不多。
qybao 2021-01-09
  • 打赏
  • 举报
回复
for example int sum=0; //总运行时间 String open=“”; //最后开灯时间 String close=“”; //最后关灯时间 for(int i=1; i<dats.size(); i++) {//循环dats Dat d1 = dats.get(i-1);//前一时间点数据 Dat d2 = dats.get(i);//当前时间点数据 if(d2.flag) {//如果当前时间点灯开 sum += getLenTime(d1.date, d2.date);//则累加时间 if(!d1.flag || (“”.equals(open) && d1.flag)) { //前一时间灯灭或前一时间灯开且开灯为空 open = d1.date;//则记录开灯时间 } } else {//如果当前时间点灯灭 if(d1.flag || (“”.equals(close) && !d1.flag) { //前一时间灯开或前一时间灯灭且关灯为空 close = d1.date;//则记录关灯时间 } } } System.out.printf(“灯运行时间:%d\n”, sum); System.out.printf(“最后灯运行时间:%s到%s\n”, open, close);

81,119

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧