【发布时间】:2019-05-08 16:33:44
【问题描述】:
我有一个 java 组件来格式化我检索的日期。这是我的代码:
Format formatter = new SimpleDateFormat("yyyyMMdd");
String s = "2019-04-23 06:57:00.0";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss.S");
try
{
Date date = simpleDateFormat.parse(s);
System.out.println("Formatter: "+formatter.format(date));
}
catch (ParseException ex)
{
System.out.println("Exception "+ex);
}
只要 String s 的格式为 "2019-04-23 06:57:00.0";,代码就可以很好地工作
我的问题是,如何调整此代码,使其适用于以下场景,例如,
我的s 字符串可能具有像
String s = "2019-04-23 06:57:00.0";
or
String s = "2019-04-23 06:57:00";
Or
String s = "2019-04-23";
如果我没有通过毫秒,现在它会失败。谢谢!
【问题讨论】:
-
使用 Joda Date API。 stackoverflow 和解决方案中也已经存在同样的问题。我很久以前就克服了同样的挑战。仅供参考,此功能在 Java 8 DateTime API 中是滞后的。所以建议你在 JODA Datetime 中挖掘。
-
仅供参考,非常麻烦的日期时间类,例如
java.util.Date、java.util.Calendar和java.text.SimpleDateFormat现在是 legacy,被 Java 8 及更高版本中内置的 java.time 类所取代.见Tutorial by Oracle。 -
我建议你不要使用
SimpleDateFormat和Date。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。而是使用LocalDate、LocalDateTime和DateTimeFormatter,均来自java.time, the modern Java date and time API。
标签: java datetime formatting