我想字符串变成日期为甲,我使用SimpleDateFormat
类。我传递字符串从字符串列表和String+Integer.toString(int)
作为输入SimpleDateFormat pattern
。注:除String+Integer.toString(int)
的如果我通过实际的字符串,如“2019年1月9日”成功地转换为字符串的日期。我尝试了很多不同的东西。
dateList
是“MMM DD”甲日期的列表。通过做dateList.get(5)+Integer.toString(year)
这是给我解析异常<Jan 09 2019
将字符串转换日期上甲添加的一年。 finalDatesInMMMDDYYYYFormat
就是我节省了MMM DD yyyy格式的日期另一份清单。 Utils.parseDate
是我在我提到的try-catch块utils的类写的方法。
int year = 2019;
private List<String> dateList = new ArrayList<>();
private List<Date> finalDatesInMMMDDYYYYFormat = new ArrayList<>();
final String testString = dateList.get(5)+Integer.toString(year);
finalDatesInMMMDDYYYYFormat.add(Utils.parseDate(testString, new SimpleDateFormat("MMM dd yyyy")));
预计:字符串更改到日期,并将其添加到finalDatesInMMMDDYYYYFormat
实际:获取解析异常。
int year = 2019;
DateTimeFormatter dateFormatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("MMM dd")
.toFormatter(Locale.ENGLISH);
List<LocalDate> finalDatesWithoutFormat = new ArrayList<>();
String dateString = "JAN 09";
MonthDay md = MonthDay.parse(dateString, dateFormatter);
finalDatesWithoutFormat.add(md.atYear(year));
System.out.println(finalDatesWithoutFormat);
从这段代码的输出是:
[2019-01-09]
java.time,现代Java的日期和时间API,包括没有一年,MonthDay
的日期,这可能成为你的目的不是一个普通的日子好类。我的代码还演示了如何在一年提供获得LocalDate
(没有一天的时间为准)。
我建议你不要使用Date
和SimpleDateFormat
。这些类的设计不当,早已过时,后者尤其是出了名的麻烦。
从信息您提供它无法告诉你为什么代码没有工作。可能的解释包括以下内容,但也有可能是其他人。
顺便说一句,你的变量名finalDatesInMMMDDYYYYFormat
是误导,因为一个Date
还没有得到(不能)的格式。
java.time
。如果你想解析格式"MMM dd yyyy"
,你应该添加一个额外的空间来测试字符串是这样的:
final String testString = dateList.get(5) + ' ' + year;