解決java字符串轉(zhuǎn)換成時(shí)間Unparseable date出錯(cuò)的問題
今天在寫代碼的時(shí)候,在將字符串轉(zhuǎn)換成時(shí)間的時(shí)候,出現(xiàn)了這樣的問題。
java.text.ParseException: Unparseable date: "2017-1-1 00:00:00"
DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date start = df.parse(startTime); Date stop = df.parse(stopTime); long timeSpan = stop.getTime() - start.getTime(); long hours = timeSpan / (3600 * 1000);
我通過上面這些代碼來計(jì)算傳入的連個(gè)時(shí)間的時(shí)間差,可以在運(yùn)行的時(shí)候卻出現(xiàn)上面那個(gè)問題,百度了一下,在進(jìn)行時(shí)間轉(zhuǎn)換的時(shí)候,字符串的長度要一一對應(yīng),
也就是說和這個(gè)“yyyy-MM-dd“要長度一致,比如2013-1-1要轉(zhuǎn)換成時(shí)間的話需要寫成”2013-01-01“;
然后就可以轉(zhuǎn)換成功了!
java.text.ParseException: Unparseable date: ""--異常6
情景:
在struts2項(xiàng)目在進(jìn)行時(shí)間段查詢時(shí),action處報(bào)了如下java.text.ParseException: Unparseable date: "" ,查看一下代碼沒有問題,在進(jìn)行數(shù)據(jù)接收時(shí)進(jìn)行判斷,但是沒有得到想要結(jié)果,有些郁悶的,解決后在此記錄一下:
[1]之前報(bào)錯(cuò)代碼:
if (bgndate!=null&&bgndate!=""&&enddate!=null && enddate!=""))
就是在這里出現(xiàn),請求時(shí)間為空時(shí),按理不該走的,實(shí)際卻走了,那肯定是我這個(gè)判斷有問題啦
public String yaoqinglist() throws Exception { try{ //bgndate 和 enddate 傳過來是字符串的類型 ActWork actWork=new ActWork(); // 小寫的mm表示的是分鐘 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (bgndate!=null&&bgndate!=""&&enddate!=null && enddate!="")) { Date bDate = sdf.parse(bgndate); Date eDate = sdf.parse(enddate); String format = sdf.format(bDate); String startTime = format.replace("-", "");// 去特殊字符 actWork.setStartTime(startTime);//展會開始時(shí)間 如:20190401 String format1 = sdf.format(eDate);// 去特殊字符 String endTime = format1.replace("-", ""); actWork.setEndTime(endTime);//展會結(jié)束時(shí)間 如:20190430 } ....省略 }catch (Exception e){ log.error(e.toString(), e); return ERROR; } return "worklist";
[2]尋找原因:
java數(shù)據(jù)類型的使用用錯(cuò)了,尷尬的不行,java 基礎(chǔ)很重要呀 !我們都知道 ,java 分為基礎(chǔ)數(shù)據(jù)類型(byte,short,char,int,long,float,double,boolean )和復(fù)合類型(String ,Intger,Long 等),基礎(chǔ)類型使用"=="比較,復(fù)合類型使用"equals"進(jìn)行比較,而我使用的變量是String類型,但是我用如bgndate!=""這就肯定不行了,使用equals就可以了。
[3]
if (bgndate!=null&&!bgndate.equals("") &&enddate!=null&& !enddate.equals(""))
解決如下:
public String yaoqinglist() throws Exception { try{ //bgndate 和 enddate 傳過來是字符串的類型 ActWork actWork=new ActWork(); // 小寫的mm表示的是分鐘 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (bgndate!=null&&!bgndate.equals("") &&enddate!=null&& !enddate.equals("")) { Date bDate = sdf.parse(bgndate); Date eDate = sdf.parse(enddate); String format = sdf.format(bDate); String startTime = format.replace("-", "");// 去特殊字符 actWork.setStartTime(startTime);//展會開始時(shí)間 如:20190401 String format1 = sdf.format(eDate);// 去特殊字符 String endTime = format1.replace("-", ""); actWork.setEndTime(endTime);//展會結(jié)束時(shí)間 如:20190430 } ....省略 }catch (Exception e){ log.error(e.toString(), e); return ERROR; } return "worklist";
OK 就到這里嘍!(^_^)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring security自定義用戶認(rèn)證流程詳解
這篇文章主要介紹了Spring security自定義用戶認(rèn)證流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03使用kotlin集成springboot開發(fā)的超詳細(xì)教程
目前大多數(shù)都在使用java集成 springboot進(jìn)行開發(fā),本文演示僅僅將 java換成 kotlin,其他不變的情況下進(jìn)行開發(fā),需要的朋友可以參考下2021-09-09SpringBoot中的統(tǒng)一異常處理詳細(xì)解析
這篇文章主要介紹了SpringBoot中的統(tǒng)一異常處理詳細(xì)解析,該注解可以把異常處理器應(yīng)用到所有控制器,而不是單個(gè)控制器,借助該注解,我們可以實(shí)現(xiàn):在獨(dú)立的某個(gè)地方,比如單獨(dú)一個(gè)類,定義一套對各種異常的處理機(jī)制,需要的朋友可以參考下2024-01-01Spring?Boot應(yīng)用打WAR包后無法注冊到Nacos的問題及解決方法
當(dāng)我們將?Spring?Boot?應(yīng)用打包成?WAR?并部署到外部?Tomcat?服務(wù)器時(shí),可能會遇到服務(wù)無法注冊到?Nacos?的情況,其原因主要是應(yīng)用獲取不到正確的服務(wù)器端口,下面給大家介紹Spring?Boot?應(yīng)用打?WAR?包后無法注冊到?Nacos的問題及解決方法,感興趣的朋友跟隨小編一起看看吧2024-06-06Java高性能本地緩存框架Caffeine的實(shí)現(xiàn)
本文主要介紹了Java高性能本地緩存框架Caffeine的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02SpringBoot整合第三方技術(shù)的實(shí)現(xiàn)
本文主要介紹了SpringBoot整合第三方技術(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02