解決java字符串轉(zhuǎn)換成時(shí)間Unparseable date出錯(cuò)的問題

這篇文章主要介紹了解決java字符串轉(zhuǎn)換成時(shí)間Unparseable date出錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

今天在寫代碼的時(shí)候,在將字符串轉(zhuǎn)換成時(shí)間的時(shí)候,出現(xiàn)了這樣的問題。文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

java.text.ParseException: Unparseable date: "2017-1-1 00:00:00"文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

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í)候,字符串的長度要一一對(duì)應(yīng),文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

也就是說和這個(gè)“yyyy-MM-dd“要長度一致,比如2013-1-1要轉(zhuǎn)換成時(shí)間的話需要寫成”2013-01-01“;文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

然后就可以轉(zhuǎn)換成功了!文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

java.text.ParseException: Unparseable date: ""--異常6
情景:文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

在struts2項(xiàng)目在進(jìn)行時(shí)間段查詢時(shí),action處報(bào)了如下java.text.ParseException: Unparseable date: "" ,查看一下代碼沒有問題,在進(jìn)行數(shù)據(jù)接收時(shí)進(jìn)行判斷,但是沒有得到想要結(jié)果,有些郁悶的,解決后在此記錄一下:文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

[1]之前報(bào)錯(cuò)代碼:文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

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

就是在這里出現(xiàn),請(qǐng)求時(shí)間為空時(shí),按理不該走的,實(shí)際卻走了,那肯定是我這個(gè)判斷有問題啦文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

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

[2]尋找原因:文章源自四五設(shè)計(jì)網(wǎng)-http://www.133122.cn/35366.html

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

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考

繼續(xù)閱讀
我的微信
微信掃一掃
weinxin
我的微信
惠生活福利社
微信掃一掃
weinxin
我的公眾號(hào)
 

發(fā)表評(píng)論

匿名網(wǎng)友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

拖動(dòng)滑塊以完成驗(yàn)證