我正在尝试将日期从(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
有什么帮助吗?
答案 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");