将日期对象转换为yyyy-MM-dd hh:mm:ss

时间:2018-09-21 09:00:15

标签: java date datetime simpledateformat

我正在尝试将此日期对象Fri Sep 21 08:00:00 SGT 2018转换为这种格式yyyy-MM-dd hh:mm:ss日期对象。

        Date dt = sd1.parse(startTime);
        logger.info(dt);
        logger.info(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(dt.toString()));

第一个日志语句有效,它返回我Fri Sep 21 08:00:00 SGT 2018,但第二个日志语句无效。

这使我出错

  

不可分割的日期2018年9月21日星期五08:00:00 SGT

我在这里做错了什么?我的最终目标是获得yyyy-MM-dd hh:mm:ss格式的日期对象。

1 个答案:

答案 0 :(得分:0)

首先,您必须使用以下命令正确解析日期:

    new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy").parse("Fri Sep 21 08:00:00 SGT 2018");

所以这应该起作用:

    Date newDate = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy").parse("Fri Sep 21 08:00:00 SGT 2018");
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SS");
    String strDate = sdf.format(newDate.getTime());
    System.out.println(strDate);

但是我建议您选择LocalDateTime

LocalDateTime ldt = LocalDateTime.parse("Fri Sep 21 08:00:00 SGT 2018", DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy"));      
System.out.println(ldt.format(DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss.SS")));