修改v1版本流量统计带宽查询接口从clickhouse中查询
This commit is contained in:
@@ -4,11 +4,12 @@
|
||||
package com.nis.util;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.ParsePosition;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
@@ -380,4 +381,171 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
||||
String dayAfter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime());
|
||||
return dayAfter;
|
||||
}
|
||||
/**
|
||||
* 获取某个时间的最近五分钟,strDate和numDate传入一个即可
|
||||
*
|
||||
* @param date 格式yyyy-MM-dd HH:mm:ss
|
||||
* @param numDate 时间戳
|
||||
* @return
|
||||
*/
|
||||
public static Calendar getRecentFiveMinute(String strDate, Long numDate) {
|
||||
Calendar instance = Calendar.getInstance();
|
||||
if (strDate != null) {
|
||||
try {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
instance.setTime(sdf.parse(strDate));
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else if (numDate != null) {
|
||||
instance.setTimeInMillis(numDate);
|
||||
}
|
||||
|
||||
int oldMinute = instance.get(Calendar.MINUTE);
|
||||
char[] charArray = String.valueOf(oldMinute).toCharArray();
|
||||
if (charArray[charArray.length - 1] - '0' >= 5) {
|
||||
charArray[charArray.length - 1] = '5';
|
||||
} else {
|
||||
charArray[charArray.length - 1] = '0';
|
||||
}
|
||||
instance.set(Calendar.SECOND, 0);
|
||||
instance.set(Calendar.MINUTE, Integer.valueOf(String.valueOf(charArray)));
|
||||
return instance;
|
||||
}
|
||||
/**
|
||||
* 获取两个时间的五分钟间隔,小时间隔,天间隔,月间隔
|
||||
*
|
||||
* @param beginDate 开始时间(包含开始时间)
|
||||
* @param endDate 结束时间(不包含结束时间)
|
||||
* @param type 0:五分钟间隔,1:小时间隔,2:天间隔,3:月间隔,4:年间隔
|
||||
* @return 返回时间戳集合
|
||||
*/
|
||||
public static List<Long> getTimeInterval(String beginDate, String endDate, int type) {
|
||||
Calendar beginCal = getRecentFiveMinute(beginDate,null);// 将时间转为最近的五分钟
|
||||
Calendar endCal = getRecentFiveMinute(endDate,null);
|
||||
|
||||
List<Long> list = new ArrayList<>();
|
||||
boolean bool = true;
|
||||
|
||||
switch (type) {
|
||||
case 1:// 获取小时间隔
|
||||
beginCal.set(Calendar.MINUTE, 0);
|
||||
beginCal.set(Calendar.HOUR_OF_DAY, beginCal.get(Calendar.HOUR_OF_DAY));
|
||||
endCal.set(Calendar.MINUTE, 0);
|
||||
endCal.set(Calendar.HOUR_OF_DAY, endCal.get(Calendar.HOUR_OF_DAY));
|
||||
break;
|
||||
case 2:// 获取天间隔
|
||||
|
||||
beginCal.set(Calendar.MINUTE, 0);
|
||||
beginCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
beginCal.set(Calendar.DAY_OF_MONTH, beginCal.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
endCal.set(Calendar.MINUTE, 0);
|
||||
endCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
endCal.set(Calendar.DAY_OF_MONTH, endCal.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
break;
|
||||
case 3:// 获取月间隔
|
||||
beginCal.set(Calendar.MINUTE, 0);
|
||||
beginCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
beginCal.set(Calendar.DAY_OF_MONTH, 1);
|
||||
beginCal.set(Calendar.MONTH, beginCal.get(Calendar.MONTH));
|
||||
|
||||
endCal.set(Calendar.MINUTE, 0);
|
||||
endCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
endCal.set(Calendar.DAY_OF_MONTH, 1);
|
||||
endCal.set(Calendar.MONTH, endCal.get(Calendar.MONTH));
|
||||
break;
|
||||
case 4:// 获取年间隔
|
||||
beginCal.set(Calendar.MINUTE, 0);
|
||||
beginCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
beginCal.set(Calendar.DAY_OF_MONTH, 1);
|
||||
beginCal.set(Calendar.MONTH, 0);
|
||||
beginCal.set(Calendar.YEAR, beginCal.get(Calendar.YEAR));
|
||||
|
||||
endCal.set(Calendar.MINUTE, 0);
|
||||
endCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
endCal.set(Calendar.DAY_OF_MONTH, 1);
|
||||
endCal.set(Calendar.MONTH, 0);
|
||||
endCal.set(Calendar.YEAR, endCal.get(Calendar.YEAR));
|
||||
break;
|
||||
}
|
||||
list.add(beginCal.getTimeInMillis());
|
||||
long endTime = endCal.getTimeInMillis();
|
||||
while (bool) {
|
||||
switch (type) {
|
||||
case 1:// 获取小时间隔
|
||||
beginCal.add(Calendar.HOUR_OF_DAY, 1);
|
||||
break;
|
||||
case 2:// 获取天间隔
|
||||
beginCal.add(Calendar.DAY_OF_MONTH, 1);
|
||||
break;
|
||||
case 3:// 获取月间隔
|
||||
beginCal.add(Calendar.MONTH, 1);
|
||||
break;
|
||||
case 4:// 获取年间隔
|
||||
beginCal.add(Calendar.YEAR, 1);
|
||||
break;
|
||||
default:// 默认获取五分钟间隔
|
||||
beginCal.add(Calendar.MINUTE, 5);
|
||||
|
||||
}
|
||||
long timeInMillis = beginCal.getTimeInMillis();
|
||||
if (timeInMillis < endTime) {
|
||||
list.add(timeInMillis);
|
||||
} else {
|
||||
bool = false;
|
||||
}
|
||||
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取一个时间对应的小时,天,月,年等粒度
|
||||
*
|
||||
* @param time 需要转化的时间
|
||||
* @param type 0:五分钟粒度,1:小时粒度,2:天粒度,3:月粒度,4:年粒度
|
||||
* @return
|
||||
*/
|
||||
public static Long getTimeByType(Long time, int type) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTimeInMillis(time);
|
||||
|
||||
switch (type) {
|
||||
case 0:// 获取小时间隔
|
||||
calendar=getRecentFiveMinute(null,time);
|
||||
break;
|
||||
case 1:// 获取小时间隔
|
||||
calendar.set(Calendar.MINUTE, 0);
|
||||
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
|
||||
break;
|
||||
case 2:// 获取天间隔
|
||||
|
||||
calendar.set(Calendar.MINUTE, 0);
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
break;
|
||||
case 3:// 获取月间隔
|
||||
calendar.set(Calendar.MINUTE, 0);
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
|
||||
break;
|
||||
case 4:// 获取年间隔
|
||||
calendar.set(Calendar.MINUTE, 0);
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
calendar.set(Calendar.MONTH, 0);
|
||||
calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR));
|
||||
|
||||
break;
|
||||
}
|
||||
return calendar.getTimeInMillis();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user