今天在项目中遇到了一个问题,调用的第三方接口接收参数的时候,有一个时间字段的值是1.620278897E+12
。
我用到的判断是不是科学计数法的正则表达式
- (-?\d+.?\d)[Ee]{1}[+-]?[0-9]
Java代码解析
import java.util.regex.Pattern;
import java.util.*;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
static Pattern pattern = Pattern.compile("(-?\\d+\\.?\\d*)[Ee]{1}[\\+-]?[0-9]*");
//判断输入字符串是否为科学计数法
static boolean isENum(String input) {
return pattern.matcher(input).matches();
}
public static void main(String[] args) {
Date date = new Date();
if (isENum(hotel.getCreateDatetime())) {
String trim = new DecimalFormat("0").format(Double.parseDouble(hotel.getCreateDatetime())).trim();
// 毫秒值转为Date
Long aLong = Long.valueOf(trim);
date.setTime(aLong);
date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));
}
}
网友评论