各种类型转为Date

最近遇到个问题,就是Java的Excel导入时,对Excel中的日期做处理,常规模式用下面这种方法处理

HSSFCell birthDateCell = row.getCell(col++);

Date date = birthDateCell.getDateCellValue(); 

今天推荐下面这种做法:

首先定一个方法,做返回date类型,需要传object值类型

 public static Date getDate(Object o)
  {
    if (o == null)
      return null;
    if (o instanceof Date)
      return ((Date)o);
    if (o instanceof String)
      return getDate(String.valueOf(o));
    if (o instanceof Timestamp)
      return new Date(((Timestamp)o).getTime());
    if (o instanceof Date)
      return new Date(((Date)o).getTime());

    return null; 

  } 

或者这样

 public static Date getDate(String dateStr)

  {
    Date temp1 = null;
    if (dateStr == null)
      return null;
    if (dateStr.equals(""))
      return null;
    SimpleDateFormat formatter = null;
    try {
      if (dateStr.indexOf(" ") != -1) {
        String[] aa = StringUtils.split(dateStr, ":");
        if (aa.length == 3)
          formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        else if (aa.length == 2)
          formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        else
          formatter = new SimpleDateFormat("yyyy-MM-dd HH");

      }
      else if (dateStr.indexOf("-") == -1) {
        formatter = new SimpleDateFormat("yyyyMMdd");
      } else {
        formatter = new SimpleDateFormat("yyyy-MM-dd");
      }

      temp1 = formatter.parse(dateStr);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return temp1;
  }

然后做Java的Excel导入时,就可以操作时间了

 HSSFCell registerTimeCell = row.getCell(col++);

 Date date = DateUtil.getDate(getCellValue(registerTimeCell));

把上面的2个 getDate方法放到你定义的类里面去,方便使用

原文地址:https://www.cnblogs.com/nxblog/p/4615500.html