如何将日期从(ddmmyyyy HH:mm:ss)转换为(yyyy-MM-dd HH:mm:ss.SSS)?

时间:2019-07-30 10:52:33

标签: java date datetime

我正在尝试将日期从(ddmmyyyy HH:mm:ss)转换为(yyyy-MM-dd HH:mm:ss.SSS)格式。

下面是代码:

String startDate="06162019 00:00:00";
SimpleDateFormat inSDF = new SimpleDateFormat("ddmmyyyy HH:mm:ss");
SimpleDateFormat outSDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
try{
   String outDate = "";
   Date date = inSDF.parse(startDate);
   System.out.println(date);
   outDate = outSDF.format(date);
   System.out.println(outDate);
}catch (final Exception e) {
   e.getMessage();
}

但是我得到了错误的结果:

Sun Jan 06 00:00:00 GMT 2019
2019-01-06 00:00:00.000

有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

我假设您使用Java 8或更高版本。如果是这样,请丢下旧的和可怕的java.util.Date,甚至更糟的java.text.SimpleDateFormat,它们已经死了并被埋葬了。切换为使用java.time软件包。为了解决您的问题,您需要执行以下操作:

String startDate="06162019 00:00:00";
DateTimeFormatter inSDF = DateTimeFormatter.ofPattern("MMddyyyy HH:mm:ss");
DateTimeFormatter outSDF = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
try{
   System.out.println(outSDF.format(inSDF.parse(startDate)));
}catch (Exception e) {
   e.getMessage();
}

查看此code run live at IdeOne.com.

  

2019-06-16 00:00:00.000

了解有关DateTimeFormatter的信息。另外,您可能会发现本文有趣:Java 8 java.time package: parsing any string to date

答案 1 :(得分:1)

小写的m代表分钟,大写的m代表月。

您需要将SimpleDateFormat inSDF = new SimpleDateFormat("ddmmyyyy HH:mm:ss");更改为SimpleDateFormat inSDF = new SimpleDateFormat("ddMMyyyy HH:mm:ss");