通过jxl 读取excel 文件中的日期,并计算时间间隔
java读取excel里面的日期会出现相差8小时的问题。
比如excel里面有一个日期是:2012-7-2 17:14:03秒,用Cell cell=readSheet.getCell(colNo, rowNo);调试该cell,发现里面的值竟然是2012-7-3 1:14:13,相差了8小时。
更奇怪的是,用String date=cell.getContents()后,得到的值竟然是2012-7-2 5:14:03分了,将24小时制变成了12小时制了。
原因是:
1、对于Date型的单元格,不应该用cell.getContents(),应该用别的方法,见如下示例。
2、还有一个就是时区问题,要用GMT时区。
具体参见以下示例:
- Cell cell = readSheet.getCell(colNo, rowNo);
- String cellValue=null;
- if (cell.getType() == CellType.DATE)
- {
- DateCell dc = (DateCell) cell;
- Date date = dc.getDate();
- TimeZone zone = TimeZone.getTimeZone("GMT");
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- sdf.setTimeZone(zone);
- cellValue = sdf.format(date);
- } else{
- cellValue = cell.getContents();
- }
这种情况下,计算时间间隔,可以首先计算相对于同一个时间始点,不同时间点距离该时间始点的分钟数,并进而求得这个时间间隔,如下
List month=new ArrayList();
month.add(31);//1月
month.add(60);
month.add(91);
month.add(121);
month.add(152);
month.add(182);
month.add(213);
month.add(244);
month.add(274);
month.add(305);
month.add(335);
month.add(366);//累积天数
time_=(int)month.get(Integer.parseInt(cellValue.substring(5, 7))-2)*24*60+(Integer.parseInt(cellValue.substring(8, 10))-1)*24*60+Integer.parseInt(cellValue.substring(11, 13))*60+Integer.parseInt(cellValue.substring(14, 16));
上述代码,可以计算某时间点距离16年1月1日凌晨0时的分钟数,同理可以计算另外一个时间距离16年1月1日凌晨0时的分钟数,两个分钟数相减,得到两个时间点的时间间隔。
以上为jxl处理时候的一些特殊操作,一般情况下,java中计算时间采用Date类,如下
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date time1 = df.parse(temp1);//temp1为包含时间的字符串
timeGap=(time1.getTime()-time.getTime())/1000; //timeGap单位为毫秒
long day=timeGap/(24*60*60);
long hour=(timeGap/(60*60)-day*24);
long min=((timeGap/(60))-day*24*60-hour*60);
long s=(timeGap-day*24*60*60-hour*60*60-min*60);
System.out.println("格式化的时间"+day+"天"+hour+"小时"+min+"分"+s+"秒");
http://blog.csdn.net/jeamking/article/details/7288353
http://wandejun1012.iteye.com/blog/1585322
通过jxl 读取excel 文件中的日期,并计算时间间隔的更多相关文章
- 读取Excel文件中的单元格的内容和颜色
怎样读取Excel文件中的单元格的内容和颜色 先创建一个Excel文件,在A1和A2中随意输入内容,设置A1的字体颜色为红色,A2的背景为黄色.需要 using Excel = Microsoft.O ...
- 用python的pandas读取excel文件中的数据
一.读取Excel文件 使用pandas的read_excel()方法,可通过文件路径直接读取.注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件.并 ...
- C#读取excel文件提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
错误描述: 在VS2010执行读取excel文件时,报错"未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序" 业务代码: //下 ...
- Java——jxl读取Excel文件
1.创建文件流,打开EXCEL文件(jxi不支持.xlsx文件,支持.xls) FileInputStream excelFile = new FileInputStream(excelPath); ...
- python读取excel文件中所有sheet表格
sales: store: """(1)用load_workbook函数打开excel文件,返回一个工作簿对象 (2)用工作簿对象获取所有的sheet (3)第一个for ...
- matlab读取excel文件中的数据
1.读取sheet1中的所有数据 1.1首先我们建立一个sheet表,表名为‘111’ 1.2 默认这些文本以及数字都放在sheet1中,我们将此excel选入当前工作目录(必要步骤), 选入当前工作 ...
- JXL 读取 Excel java中jxl导出数据到excel的例子 上传文件
2010-10-14 19:17:06 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info 信息: Entferne Dat ...
- gridview读取Excel文件中的数据,并将其导入数据库
原文发布时间为:2008-10-16 -- 来源于本人的百度文章 [由搬家工具导入] //将需要导入的文件上传到服务器 string filePath = "" ...
- js/ts/tsx读取excel表格中的日期格式转换
const formatDate = (timestamp: number) => { const time = new Date((timestamp - 1) * 24 * 3600000 ...
随机推荐
- bzoj1468 Tree
最经典的点分治题目,在递归子树的时候减去在算父亲时的不合法方案. #include<iostream> #include<cstdio> #include<cstring ...
- iOS开发-删除字典中的null
删除字典中的null 我们在处理数据库接口的过程中,如果数据中出现null,我们是没法处理的.我在使用NSUserDaults保存后,出现崩溃. null产生原因 null是后台在处理数据的时候,如果 ...
- 扫描内网活跃的ip
网段内活跃的ip:nmap -sP 10.10.30.0/24|grep for|awk '{print $5}'
- linux中test与[ ]指令的作用
linux中test与[ ]指令的作用: 在Linux中,test和[ ]功能是一样的,类似于c语言中的( ).不过Linux的test和[ ]是指令.在和if或者while联用时要用空格分开.
- Tomcat(多版本)安装注意!
♣电脑安装多个版本的tomcat和切换(解压版的apache-tomcat -5.5.0/ -6.0.45/ -7.0.70 三个版本) ♣tomcat配置环境变量 ♣tomcat5.5. ...
- linux-shell笔记
1.当从windows拖到shell中无法传递文件时,多半可能没有权限,可用sudo rz来进行手动选择传递 2.连接虚拟机时,ssh 用户名@ip地址,然后会提示输入该虚拟机密码,输入密码即可连接 ...
- Sina 新浪Ip归属地Api 很好用的,使用get请求
前言 这几天做了一个客服管理系统,需要根据游客的Ip获取他的归属地,刚开始使用了,www.ip138.com 抓取ip归属地,用这还可以,但是不显示国家:于是是找了这个新浪的Api,很不错啊 用法 1 ...
- 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...
- Java中Properties类知识的总结
一.Properties类与配置文件 注意:是一个Map集合,该集合中的键值对都是字符串.该集合通常用于对键值对形式的配置文件进行操作. 配置文件:将软件中可变的部分数据可以定义到一个文件中,方便以后 ...
- C++ 在Windows下截取整个屏幕 和 指定句柄窗口的屏幕
#include <windows.h> #include <stdint.h> #include <stdio.h> void ShootScreen(const ...