【发布时间】:2020-09-05 22:01:55
【问题描述】:
我有一个这种格式的日期 - 01 May 2020,我想以以下格式解析它 - 2020-05-01T00:00:00。我正在使用以下代码 -
static String convertDateStringFormat(String dateString, String originalDateFormat, String outputDateFormat){
DateFormat inputFormat = new SimpleDateFormat(originalDateFormat, Locale.ENGLISH);
Date input = null;
try {
input = inputFormat.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
DateFormat outputFormat = new SimpleDateFormat(outputDateFormat, Locale.ENGLISH);
return outputFormat.format(input);
}
我将参数传递为 - convertDateStringFormat("01 May 2020", "dd MMM yyyy", "yyyy-MM-dd'T'HH:mm:ss")。我不知道我做错了什么,但它给了我这个异常 - java.lang.IllegalArgumentException: Parse error: 2020-05-01T00:00:00,所以看起来它正在转换为正确的格式然后抛出异常?
【问题讨论】:
-
无法复制。发布的代码返回带有发布参数的
2020-05-01T00:00:00。您确定这是引发该异常的代码吗?此外,您应该使用ThreeTenABP重写此代码。 -
是的,这是我在项目中使用的确切代码。我正在做的另一件事是将从此方法返回的字符串值放入 java.util.Date 构造函数
-
那行不通。日期不采用这样的格式化字符串。您发布的代码工作正常。
-
inputFormat.parse(dateString);返回一个Date对象。 -
即使在 Android 上,甚至在较旧的 Android 版本上,也请考虑丢弃长期过时且臭名昭著的麻烦
SimpleDateFormat和朋友,并将 ThreeTenABP 添加到您的 Android 项目中以使用 java.time,现代 Java 日期和时间 API。使用起来感觉好多了。
标签: android date datetime java-8 datetime-format