1.首先我先放主要核心代码,date类型数据即时间类型数据,经常在处理数据时会见到
①:得到date类型数据
②:date.getTime()得到long类型的数据
③:有了long类型的数据之后即可进行数据的加减法,其中得到的是微秒级单位,需要继续计算
//首先我们需要得到date类型数据 这里已经是在excel读取并存储在了列表名为sl的List中
Date dateBefore = sl.get(i);
Date dateNext = sl.get(i + 1);
long dateBeforeTime = dateBefore.getTime();
long dateNextTime = dateNext.getTime();
//SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
// time = sdf.format(time)
long delta = dateNextTime - dateBeforeTime;
//这里得到的时间差是微秒级别 下面是转换为天 时 分 秒的计算方法
long day = delta / (24 * 60 * 60 * 1000);
long hour = (delta / (60 * 60 * 1000) - day * 24);
long min = ((delta / (60 * 1000)) - day * 24 * 60 - hour * 60);
long s = (delta / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
从上可见主要是得到Date类型数据,之后利用date数据自带的date.getTime()参数就得到了时间
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
long dateBeforeTime = dateBefore.getTime();
System.out.println("date.getTime()得到的数据"+dateBefore);
String format = sdf.format(dateBefore);
System.out.println("sdf处理后date.getTime()得到的数据"+format);
date.getTime()得到的数据Sun Dec 31 09:38:50 CST 1899
date.getTime()得到的数据Sun Dec 31 09:39:09 CST 1899
date.getTime()得到的数据Sun Dec 31 09:39:09 CST 1899
date.getTime()得到的数据Sun Dec 31 09:39:09 CST 1899
date.getTime()得到的数据Sun Dec 31 09:39:10 CST 1899
date.getTime()得到的数据Sun Dec 31 09:39:15 CST 1899
date.getTime()得到的数据Sun Dec 31 09:39:20 CST 1899
若想得到00:00:00类型数据就利用 SimpleDateFormat 函数来处理
sdf处理后date.getTime()得到的数据09:38:50
sdf处理后date.getTime()得到的数据09:39:09
sdf处理后date.getTime()得到的数据09:39:09
sdf处理后date.getTime()得到的数据09:39:09
sdf处理后date.getTime()得到的数据09:39:10
具体怎么使用POI得到excel数据在下面链接,可以看下
Java采用POI读取Excel时间日期数据并进行运算处理,计算相邻两个数据的时间差_皮皮痒求锤的博客-CSDN博客_java读取excel日期https://blog.csdn.net/qq_53208462/article/details/123961077?spm=1001.2014.3001.5501然后我附下这次的代码,这次要获取的是在表格里的第三列(可以是第n列)数据,并计算时间差
package com.ma.testPoi;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.junit.Test;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ReadTimeArray {
String PATH = "C:\\Users\\Administrator\\Desktop\\文件名.xls";
@Test
public void testRead01() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
//引入文件流
FileInputStream inputStream = new FileInputStream(PATH);
//创建工作簿
Workbook workbook = new HSSFWorkbook(inputStream);
//取第一个表
Sheet sheet = workbook.getSheetAt(0);
//获取标题title
Row rowTitle = sheet.getRow(0);
if (rowTitle != null) {
int cells = rowTitle.getPhysicalNumberOfCells();
for (int cellNum = 0; cellNum < cells; cellNum++) {
Cell cell = rowTitle.getCell(cellNum);
if (cell != null) {
// CellType cellTypeEnum = cell.getCellTypeEnum();
// System.out.println(cellTypeEnum);
String stringCellValue = cell.getStringCellValue();
System.out.println("标题:" + stringCellValue);
}
}
}
//引入一个列存储数据
List<Date> sl = new ArrayList<>();
//多少行数据
int rowCount = sheet.getPhysicalNumberOfRows();
//从第一行开始 取消了标题
for (int rowNum = 1; rowNum < rowCount; rowNum++) {
//获取行的数据
Row rowData = sheet.getRow(rowNum);
//看看有多少行
// System.out.println(rowCount);
if (rowData != null) {
//读取列
int cellCount = rowTitle.getPhysicalNumberOfCells();
// System.out.println("我有多少列"+cellCount);
//从第cellNum列开始
for (int cellNum = 2; cellNum < cellCount; cellNum++) {
// 得到每一个表格的内容
Cell cell = rowData.getCell(cellNum);
// System.out.println("每一列的一格数据"+cell);
//将表格内容转化为Date格式
Date dateCellValue = cell.getDateCellValue();
// System.out.println("处理成date类型 date"+dateCellValue);
// System.out.println(dateCellValue);
// 建立一个存储时间类型的列表
sl.add(dateCellValue);
//转换为 字符串的时分秒 解析
// String dateData = sdf.format(dateCellValue);
//将每个单元格的数据存储到list sl中
// System.out.println("转成字符串 00:00:00"+dateData);
// sl.add(dateData);
}
}
}
int size = sl.size();
// System.out.println(sl);
for (int i = 0; i < size-1; i++) {
Date dateBefore = sl.get(i);
Date dateNext = sl.get(i + 1);
long dateBeforeTime = dateBefore.getTime();
long dateNextTime = dateNext.getTime();
// System.out.println("date.getTime()得到的数据"+dateBefore);
String format = sdf.format(dateBefore);
System.out.println("sdf处理后date.getTime()得到的数据"+format);
// System.out.println(parse);
long delta = dateNextTime - dateBeforeTime;
// System.out.println("时间差"+delta);
long day = delta / (24 * 60 * 60 * 1000);
long hour = (delta / (60 * 60 * 1000) - day * 24);
long min = ((delta / (60 * 1000)) - day * 24 * 60 - hour * 60);
long s = (delta / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
if (s != 5) {
// System.out.println(day + "天" + hour + "小时" + min + "分" + s + "秒");
}
}
}
}