3 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
從 java-8 開(kāi)始,您可以使用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
默認(rèn)情況下,LocalDateISO-8601 日歷系統(tǒng)中沒(méi)有時(shí)區(qū),例如 2007-12-03。

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

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
您雙重創(chuàng)建 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"))
添加回答
舉報(bào)