Java实现解析科学计数法的毫秒值并转换为时间类型

2021-08-17  本文已影响0人  山巅自相见

今天在项目中遇到了一个问题,调用的第三方接口接收参数的时候,有一个时间字段的值是1.620278897E+12
我用到的判断是不是科学计数法的正则表达式

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));
  }
}
上一篇 下一篇

猜你喜欢

热点阅读