为了账号安全,请及时绑定邮箱和手机立即绑定

获取“解析异常”

获取“解析异常”

跃然一笑 2022-06-15 17:13:36
我想将字符串更改为我正在使用SimpleDateFormat类的日期格式。我将字符串作为字符串String+Integer.toString(int)列表和SimpleDateFormat pattern输入传递。注意:String+Integer.toString(int)如果我传递像“Jan 09 2019”这样的实际字符串,而不是成功地将字符串转换为日期。我尝试了很多不同的东西。dateList是“MMM dd”甲酸盐日期的列表。通过这样做在该甲酸盐上添加年份,这给了我解析异常 <<-- 如果我硬编码日期,例如将字符串转换为日期 dateList.get(5)+Integer.toString(year),则不是这个。是另一个列表,我以 MMM dd yyyy 格式保存日期。 是我在 Utils 类中编写的一种方法,其中我提到了 try-catch 块。Jan 09 2019finalDatesInMMMDDYYYYFormatUtils.parseDateint 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实际:获取解析异常。
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

java.time

    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(没有时间的日期)。

我建议你不要使用Dateand SimpleDateFormat。这些类设计不佳且早已过时,后者尤其是出了名的麻烦。

你的代码出了什么问题?

根据您提供的信息,无法判断您的代码为何不起作用。可能的解释包括以下,但可能还有其他解释。

  • 正如rockfarkas在另一个答案中所说,在连接你的字符串时,你没有在月份和年份之间放置任何空格,但是你用于解析的格式字符串需要一个空格。

  • 例如,如果您的月份缩写是英文,而您的 JVM 的默认语言环境不是英文,则解析将失败(除了月份缩写重合的极少数情况)。您应该始终为您的格式化程序提供一个语言环境,以指定要解析(或生成)的字符串中使用的语言。

顺便说一句,您的变量名称finalDatesInMMMDDYYYYFormat具有误导性,因为 aDate没有(不能有)格式。


查看完整回答
反对 回复 2022-06-15
?
守候你守候我

TA贡献1802条经验 获得超10个赞

如果你想解析格式"MMM dd yyyy",你应该像这样在你的测试字符串中添加一个额外的空格:

final String testString = dateList.get(5) + ' ' + year;


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号