通过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 ...
随机推荐
- db2 游标使用
游标一般用来迭代结果集中的行 为了在一个过程中处理一个游标的结果,需要做以下事情: 在存储过程块的开头部分 DECLARE 游标. 打开该游标. 将游标的结果取出到之前已声明的本地变量中(隐式游标处理 ...
- 常用SQL脚本操作
SQL 脚本创建数据库.表及简单查询 --------------------------------------------------------------------------------- ...
- 通过Gulp使用Browsersync实现浏览器实时响应文件更改
Gulp是什么鬼 Browsersync又是什么鬼 如何安装使用Browsersync 安装 使用 效果图 参考 Gulp是什么鬼 Gulp是一种基于node.js的构建工具,有关构建工具的概念请移步 ...
- Hadoop_UDF示例
UDF: 一进一出 Eclipse端 1. 继承UDF 2. 实现evaluate方法(可重裁实现多个evaluate方法,以实现不同需求) 3. 导出类jar包,注意指定main方法 Hive端 ...
- Activity与Fragment
Fragment是Android honeycomb 3.0新增的概念,Fragment名为碎片不过却和Activity十分相似. Fragment是用来描述一些行为或一部分用户界面在一个Activi ...
- SQL语法
full outer--全连.两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有,A表没有的显示为(null) A表 left join B表--左连,以A表为基础,A表的全部 ...
- 微信分享JS函数(原创)[已失效]
//微信内置浏览器分享事件 //来自:http://www.cnblogs.com/cielwater //分享朋友圈事件 //UpdateWeixinJSBridge(CircleModel[Jso ...
- 使用 SVN Hook 实现服务器端代码自动更新
之前的做法是客户端提交代码之后,再去服务器端项目中 svn up 一下来更新代码,让服务器端的项目更新到最新版本.可以编写一个 post-commit 钩子脚本来实现服务器端代码的自动更新,它在 SV ...
- swif-throws异常抛出
import UIKit enum VendingMachineError: Error { case invalidSelection //选择无效 case insufficientFunds(c ...
- sublime work flow
Tools -> Developer -> New Snippet <snippet> <content><![CDATA[ }() { ${} } ]]&g ...