亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取“解析異常”

獲取“解析異常”

躍然一笑 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 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號