java Date裝成英文String后,無法再轉(zhuǎn)回Date的解決方案
這是同事遇到的一個(gè)問題。
代碼中的Date,放到頁面上的格式為“Fri Mar 21 09:20:38 CST 2014”(不顯示,只為傳遞到下一個(gè)controller),
再次提交表單時(shí),Dto類的 private Date startTime; 沒有被set進(jìn)值。
用本地程序做了一下實(shí)驗(yàn)
public static void main(String[] args) {
Date now = new Date();
System.out.println(now);
String nowStr = now.toString();
DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date parsedNow = null;
try {
parsedNow = format.parse(nowStr);
System.out.println(parsedNow);
} catch (ParseException e) {
e.printStackTrace();
}
}
程序執(zhí)行format.parse(nowStr)時(shí)報(bào)錯(cuò)
Java.text.ParseException: Unparseable date: "Fri Mar 21 09:25:48 CST 2014"
at java.text.DateFormat.parse(DateFormat.java:337)
分析和查看源碼后得出結(jié)論,由系統(tǒng)所使用的語言導(dǎo)致的錯(cuò)誤。
DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
默認(rèn)其實(shí)是
DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", new Locale(System.getProperty("user.language")));
其中System.getProperty("user.language")由于系統(tǒng)是中文,所以為zh,應(yīng)該是中文時(shí)區(qū)不支持此種format。
修改上面的代碼驗(yàn)證此觀點(diǎn)
public static void main(String[] args) {
Date now = new Date();
System.out.println(now);
String nowStr = now.toString();
DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", new Locale(System.getProperty("user.language")));
System.out.println(System.getProperty("user.language"));
Date parsedNow = null;
try {
parsedNow = format.parse(nowStr);
System.out.println(parsedNow);
} catch (ParseException e) {
format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
try {
System.out.println("new format by 'en'");
System.out.println(format.parse(nowStr));
} catch (ParseException e1) {
e1.printStackTrace();
}
}
}
另一種解決方案是,在jsp頁面中,對(duì)日期格式進(jìn)行一次轉(zhuǎn)換,如
<input type="hidden" name="data" value='
<fmt:formatDate value="${dto.date}" pattern="yyyy-MM-dd"/>
'/>
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
Hibernate雙向一對(duì)一映射關(guān)系配置代碼實(shí)例
這篇文章主要介紹了Hibernate雙向一對(duì)一映射關(guān)系配置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
SpringBoot中對(duì)應(yīng)2.0.x版本的Redis配置詳解
這篇文章主要為大家介紹了SpringBoot中對(duì)應(yīng)2.0.x版本的Redis配置詳解,文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的小伙伴們可以了解一下2022-06-06
JAVA多線程Thread和Runnable的實(shí)現(xiàn)
java中實(shí)現(xiàn)多線程有兩種方法:一種是繼承Thread類,另一種是實(shí)現(xiàn)Runnable接口。2013-03-03
Mybatis結(jié)果集映射一對(duì)多簡(jiǎn)單入門教程
本文給大家介紹Mybatis結(jié)果集映射一對(duì)多簡(jiǎn)單入門教程,包括搭建數(shù)據(jù)庫(kù)環(huán)境的過程,idea搭建maven項(xiàng)目的代碼詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06
java實(shí)現(xiàn)Flappy Bird游戲源代碼
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)Flappy Bird游戲源代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Spring實(shí)現(xiàn)處理跨域請(qǐng)求代碼詳解
這篇文章主要介紹了Spring實(shí)現(xiàn)處理跨域請(qǐng)求代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以了解下。2017-12-12
Hibernate的Session_flush與隔離級(jí)別代碼詳解
這篇文章主要介紹了Hibernate的Session_flush與隔離級(jí)別代碼詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02

