Java处理时间类型数据,利用java.Date计算时间差,date类型数据处理

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日期icon-default.png?t=M5H6https://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 + "秒");
            }
        }

    }
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值