3 回答

TA貢獻1780條經驗 獲得超5個贊
從 java-8 開始,您可以使用ZonedDateTime輸入日期的 with 模式,即EEE MMM dd HH:mm:ss zzz yyyy
String dateInString = "Sun Oct 01 00:00:00 EDT 2017";
ZonedDateTime time = ZonedDateTime.parse(dateInString,DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy"));
System.out.println(time.toLocalDate()); //2017-10-01
默認情況下,LocalDateISO-8601 日歷系統中沒有時區,例如 2007-12-03。

TA貢獻1864條經驗 獲得超2個贊
您已將格式化程序定義為“日期、月份、年份”的概念,然后嘗試要求它解析根本不是這種格式的字符串。您需要制作一個可以格式化的格式化程序Sun Oct 01 00:00:00 EDT 2017
,dd-MMM-yyyy
顯然不是。SimpleDateFormat 的 javadoc會告訴您需要使用什么字母組合。
一旦你掌握了這一點,就很容易了:用這個新的格式化程序進行解析,然后.format
用你的舊格式化程序(那個dd-MMM-yyyy
)進行調用。

TA貢獻1812條經驗 獲得超5個贊
您雙重創建 DateFormat 一次解析和一次格式化
DateFormat dfParse = new SimpleDateFormat("EEEEE MMMMM yyyy HH:mm:ss.SSSZ");
DateFormat dfFormat = new SimpleDateFormat("yyyy-MM-dd");
dfFormat.format(dfParse.parse("Sun Oct 01 00:00:00 EDT 2017"))
添加回答
舉報