Excel日期/时间存储数值转换为具体日期/时间(java实现)
2016-09-16 15:27
756 查看
在用POI的事件模型eventusermodel读取大容量Excel时发现读取的日期、时间格式输出后是浮点数字符串,然而没有找到有类似于usermodel的分格式读取的方法,于是编写一个工具类,把获取的浮点数转换成日期/时间格式,增加可用性。
Excel用浮点数标记日期时间,整数位代表日期,小数位代表时间。
代码如下:
Excel用浮点数标记日期时间,整数位代表日期,小数位代表时间。
代码如下:
package Util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; /** * Created by yijie on 9/15/16. */ public class StringToDate { private static final int SECONDS_PER_MINUTE = 60; private static final int MINUTES_PER_HOUR = 60; private static final int HOURS_PER_DAY = 24; private static final int SECONDS_PER_DAY = (HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); /** 一天的毫秒数 **/ private static final long DAY_MILLISECONDS = SECONDS_PER_DAY * 1000L; private static SimpleDateFormat sdFormat; /** 转换方法 @parma numberString 要转换的浮点数 @parma format 要获得的格式 例如"hh:mm:ss" **/ public static String toDate(double numberString, String format) { sdFormat = new SimpleDateFormat(format); int wholeDays = (int)Math.floor(numberString); int millisecondsInday = (int)((numberString - wholeDays) * DAY_MILLISECONDS + 0.5); Calendar calendar = new GregorianCalendar(); setCalendar(calendar, wholeDays, millisecondsInday, false); return sdFormat.format(calendar.getTime()); } private static void setCalendar(Calendar calendar, int wholeDays, int millisecondsInDay, boolean use1904windowing) { int startYear = 1900; int dayAdjust = -1; // Excel thinks 2/29/1900 is a valid date, which it isn't if (use1904windowing) { startYear = 1904; dayAdjust = 1; // 1904 date windowing uses 1/2/1904 as the first day } else if (wholeDays < 61) { // Date is prior to 3/1/1900, so adjust because Excel thinks 2/29/1900 exists // If Excel date == 2/29/1900, will become 3/1/1900 in Java representation dayAdjust = 0; } calendar.set(startYear,0, wholeDays + dayAdjust, 0, 0, 0); calendar.set(GregorianCalendar.MILLISECOND, millisecondsInDay); } }
相关文章推荐
- mysql 时间转换 用EXCEL实现MySQL时间戳格式和日期格互转
- mysql 时间转换 用EXCEL实现MySQL时间戳格式和日期格互转
- java简单实现测试程序执行时间及日期转换字符串
- <java代码> 实现Unix时间戳(Unix timestamp)与普通时间 之间的相互转换
- Java将Unix时间戳转换成指定格式日期
- Java的日期与时间(九)Date与String的转换
- Java实现纪元秒和本地日期时间互换的方法【经典实例】
- Java实现字符串解析为日期时间的方法示例
- java日期和时间转换字符
- Java 、Android 时间,日历,日期转换
- java 关于时间的转换,两个时间日期的比较
- Java时间日期字符串格式转换大全
- PHPExcel导入的日期格式转换成时间戳
- Java 日期时间 Date类型,long类型,String类型表现形式的转换 (转)
- Java 日期时间 Date类型,long类型,String类型表现形式的转换
- Java时间戳与日期格式直接的互相转换(1:将系统日期格式转为时间戳。2:将指定日期转为时间戳。3:将系统时间戳转为日期格式。4将指定的时间戳转为日期格式)
- java实现记事本基本功能:新建、打开、保存、另存为、退出、替换、全部替换、复制、剪切、粘贴、全选、获取当前时间日期、修改字体、颜色、自动换行等
- Java将字符串转化为时间格式,与实现日期的计算
- mysql日期存储为int,mybatis做ORM映射与java.util.Date的转换问题
- java 关于读取excel表内的日期时间