Excel导⼊时,时间类型变为数字,Java处理数字变Date类型
时间变为 43101
问题描述:在写Excel导⼊功能时,后台⼀直报时间类型转换错误,在debug模式下,我发现表中的时间到⽅法⾥变成了43101,如下图所⽰
**
解决⽅法
try-catch处理此语句,报错后对数字进⾏时间转换
static long minTime = Timestamp.valueOf("1970-01-01 09:00:00").getTime();
static long maxTime = Timestamp.valueOf("2038-01-19 11:00:00").getTime();
static SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //判断并转换时间格式 ditNumber = 43607.4166666667
public static String getTime(String ditNumber){
//如果不是数字
if(!isNumeric(ditNumber)){
return null;
}
//如果是数字⼩于0则返回
BigDecimal bd =new BigDecimal(ditNumber);
int days = bd.intValue();//天数
int mills =(int) und(bd.subtract(new BigDecimal(days)).doubleValue()*24*3600);
//获取时间
Calendar c = Instance();
c.set(1900,0,1);
c.add(Calendar.DATE, days -2);
int hour = mills /3600;
int minute =(mills - hour *3600)/60;
int second = mills - hour *3600- minute *60;
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, second);
Date d = c.getTime();//Date
Timestamp t = Timestamp.valueOf(dateFormat.Time()));//Timestamp try{
//时间戳区间判断
if(minTime <= d.getTime()&& d.getTime()<= maxTime){
return dateFormat.Time());
}else{
return"outOfRange";
}
}catch(Exception e){
System.out.println("传⼊⽇期错误"+ c.getTime());
}
return"Error";java时间日期格式转换
}
//校验是否数据含⼩数点
private static boolean isNumeric(String str){
Pattern pattern = Patternpile("[0-9]+\\.*[0-9]*");
Matcher isNum = pattern.matcher(str);
if(!isNum.matches()){
return false;
}
return true;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论