您的位置:首頁技術文章
文章詳情頁

解決java字符串轉換成時間Unparseable date出錯的問題

瀏覽:96日期:2022-08-10 13:04:08

今天在寫代碼的時候,在將字符串轉換成時間的時候,出現了這樣的問題。

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);

我通過上面這些代碼來計算傳入的連個時間的時間差,可以在運行的時候卻出現上面那個問題,百度了一下,在進行時間轉換的時候,字符串的長度要一一對應,

也就是說和這個“yyyy-MM-dd“要長度一致,比如2013-1-1要轉換成時間的話需要寫成”2013-01-01“;

然后就可以轉換成功了!

java.text.ParseException: Unparseable date: ''--異常6

情景:

在struts2項目在進行時間段查詢時,action處報了如下java.text.ParseException: Unparseable date: '' ,查看一下代碼沒有問題,在進行數據接收時進行判斷,但是沒有得到想要結果,有些郁悶的,解決后在此記錄一下:

[1]之前報錯代碼:

if (bgndate!=null&&bgndate!=''&&enddate!=null && enddate!=''))

就是在這里出現,請求時間為空時,按理不該走的,實際卻走了,那肯定是我這個判斷有問題啦

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);//展會開始時間 如:20190401String format1 = sdf.format(eDate);// 去特殊字符String endTime = format1.replace('-', '');actWork.setEndTime(endTime);//展會結束時間 如:20190430 } ....省略 }catch (Exception e){ log.error(e.toString(), e); return ERROR;}return 'worklist';

[2]尋找原因:

java數據類型的使用用錯了,尷尬的不行,java 基礎很重要呀 !我們都知道 ,java 分為基礎數據類型(byte,short,char,int,long,float,double,boolean )和復合類型(String ,Intger,Long 等),基礎類型使用'=='比較,復合類型使用'equals'進行比較,而我使用的變量是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);//展會開始時間 如:20190401 String format1 = sdf.format(eDate);// 去特殊字符String endTime = format1.replace('-', '');actWork.setEndTime(endTime);//展會結束時間 如:20190430 } ....省略 }catch (Exception e){ log.error(e.toString(), e); return ERROR;}return 'worklist';

OK 就到這里嘍!(^_^)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
国产综合久久一区二区三区