首页 > 解决方案 > 如何将日期从 (ddmmyyyy HH:mm:ss) 转换为 (yyyy-MM-dd HH:mm:ss.SSS)?)

问题描述

我正在尝试将日期从 (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

任何帮助,将不胜感激?

标签: javadatedatetime

解决方案


我假设您使用 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();
}

查看在 IdeOne.com 上实时运行的代码。

2019-06-16 00:00:00.000

阅读有关DateTimeFormatter的信息。您也可能会发现这篇文章很有趣:Java 8 java.time package: parsing any string to date


推荐阅读