通过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 ...
随机推荐
- [Android] 升级了新的android studio之后 发生如下的报错,The following classes could not be instantiated:
The following classes could not be instantiated:- android.support.v4.widget.DrawerLayout (Open Class ...
- css3动态旋转魔方练习
图片素材: html部分: <!DOCTYPE html><html><head> <meta charset="utf-8" /> ...
- JavaScript电子时钟+倒计时
JavaScript时间类 获取时分秒: getHours() getMinutes(); getSeconds(); 获取 ...
- htaccess文件还可以被用来把访问网站的流量劫持到黑客的网站
看是否有文件上传操作(POST方法), IPREMOVED--[01/Mar/2013:06:16:48-0600]"POST/uploads/monthly_10_2012/view.ph ...
- mongodb操作命令
连接mongodb:(mongo命令打开的是一个javascript shell.所以js语法在这里面都行得通)mongo 192.168.18.xx:27088/ups -uusername -pp ...
- oracle 常用函数【转】
常用Oracle函数 SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') z ...
- PHP中include引用导致不能再次相对引用文件的一个小问题
今天遇到一个问题:php,incldue_once引入多次文件,多层引用,所以,不同目录下的文件要使用一个文件得先确定目录,比如(下例是提取出来的精简例子,组织的有点乱乱的): /homepage/i ...
- System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, error: 26 - 定位指定的服务器/实例时出错)
A network-related or instance-specific error occurred while establishing a connection to SQL Server. ...
- android中如何在低版本(5.0之前)上使用tint(着色)属性
1. 使用app前缀(app:backgroundTint,app:backgroundTintMode),如果使用android前缀,在低版本上是拿不到值的,因为这些属性是5.0以后才加入的. 2. ...
- C#实现对远程服务器的内存和CPU监控
C#实现对远程服务器的内存和CPU监控小记 1. 主要使用到的组件有System.Management.dll 2. 主要类为 :ManagementScope 连接远程服务器示例代码: priv ...