自己写的echarts计算时间坐标的代码

1 数据库sql查询的数据

自己写的echarts计算时间坐标的代码_第1张图片


2 最终echarts画出来的图

自己写的echarts计算时间坐标的代码_第2张图片




3 代码如下

计算主方法方法

/**
	 * echarts算时间轴代码(算流量的代码),这里的时间间隔为5秒钟,一分钟的流量,totalSize = 12
	 * ebuStreamList 为EbuStream的集合, EbuStream的属性有totalStream,time
	 * totalSize为x轴有多少点
	 * startTime 为起始时间
	 * */
	private String[] getEbuStream(List<EbuStream> ebuStreamList,int totalSize,String startTime) throws ParseException{
		String[] totalStreamArray = new String[totalSize];
		String currentTime  = startTime; //起始时间变量
		int pointer = 0; //时间指针
		int counter = 0 ;//计数器
		for(int i = 0 ;  i < totalSize ; i ++){ // 遍历开始,为每个点赋值
			String nextTime = ChartsTimeUtil.getNextTime(currentTime, 1); //下一次时间
			//校验时间
			if(ebuStreamList!=null&&ebuStreamList.size()>pointer)
			{
				String cpuTime  = ebuStreamList.get(pointer).getTime();//得到当前流量实体的时间
				/**
				 * 假设时间为
				 * currentTime = 2016-05-07 22:10:46
				 * cpuTime = 2016-05-07 22:10:48
				 * nextTime = 2016-05-07 22:10:51
				 * 则cpuTime在currentTime和nextTime之间
				 * 执行if( ChartsTimeUtil.isBigger(cpuTime, currentTime) && ChartsTimeUtil.isBigger(nextTime, cpuTime) )里面的代码
				 * 
				 * */
				if( ChartsTimeUtil.isBigger(cpuTime, currentTime) && ChartsTimeUtil.isBigger(nextTime, cpuTime) ){
					totalStreamArray[i] = ""+ebuStreamList.get(pointer).getTotalStream()+"";
					pointer++;
					counter++;
				}
				/**
				 * 假设时间为
				 * cpuTime = 2016-05-07 22:10:45
				 * currentTime = 2016-05-07 22:10:46
				 * nextTime = 2016-05-07 22:10:51
				 * 则cpuTime在currentTime和nextTime的左侧
				 * 执行else if(ChartsTimeUtil.isBigger(currentTime, cpuTime))里面的代码
				 * 
				 * */
				else if(ChartsTimeUtil.isBigger(currentTime, cpuTime)){
					pointer++;
					nextTime = currentTime;
					i--;
				}
				/**
				 * 假设时间为
				 * currentTime = 2016-05-07 22:10:46
				 * nextTime = 2016-05-07 22:10:51
				 * cpuTime = 2016-05-07 22:10:53
				 * 则cpuTime在currentTime和nextTime的右侧
				 * 执行下面else里面的代码
				 * 
				 * */
				else{
					
					totalStreamArray[i] = "";
					counter++;
				}
				
			}
			/**
			 * 当ebuStreamList为空的时候执行下面else代码
			 * */
			else{
				totalStreamArray[i] = "";
				counter++;
			}

			currentTime = nextTime; // 当前时间往下移一个点
		}
		return totalStreamArray;
	}
	

ChartsTimeUtil.getNextTime方法代码

	/**
	 * 得到下一个点的时间
	 * private static Calendar calendar = Calendar.getInstance(); 
	 * private static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	 * ChartsSnmpTimerTask.timeFrequency=1000 * 5;  // 时间间隔5秒钟
	 * 
	 * **/
	public static String getNextTime(String currentTime ,int next) throws ParseException{
		if(currentTime==null||currentTime.replace(" ", "").equals("")) return null;
		calendar.setTime(simpleDateFormat.parse(currentTime));
		calendar.set(Calendar.SECOND , calendar.get(Calendar.SECOND) + ( ChartsSnmpTimerTask.timeFrequency / 1000 ) * next  );
		return simpleDateFormat.format(calendar.getTime());
	}

ChartsTimeUtil.isBigger代码

	/**  
	 * 比较两个日期之间的大小 
	 *  
	 * @param d1 
	 * @param d2 
	 * @return 前者大于后者返回true 反之false 
	 * @throws ParseException 
	 */  
	public static boolean isBigger( String time1,  String time2) throws ParseException {  
		
		int result = time1.compareTo(time2);
		if(result>=0){
			return true;
		}else{
			return false;
		}
	
	} 

EbuStream实体类

package com.nufront.euht.web.ebu.model;

import java.sql.Timestamp;

/**
 * ebu流量实体
 * */
public class EbuStream {
	private String id;
	private int upstream;
	private int downstream;
	private int totalStream;
	private String time;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public int getUpstream() {
		return upstream;
	}
	public void setUpstream(int upstream) {
		this.upstream = upstream;
	}
	public int getDownstream() {
		return downstream;
	}
	public void setDownstream(int downstream) {
		this.downstream = downstream;
	}
	public int getTotalStream() {
		return totalStream;
	}
	public void setTotalStream(int totalStream) {
		this.totalStream = totalStream;
	}
	public String getTime() {
		return time;
	}
	public void setTime(String time) {
		this.time = time;
	}
	
}




你可能感兴趣的:(自己写的echarts计算时间坐标的代码)