2015-07-20 76 views
1

我無法使用SimpleDateFormat解析日期。我曾嘗試這樣的代碼:爲什麼我得到不可解析的日期異常?

SimpleDateFormat fechas = new SimpleDateFormat("dd/MM/yyyy hh:mm"); 

if (data[i].length() > 1) { 
    Date f = (Date) fechas.parse(data[i]); 
    System.out.println(i + " " + f); 
} 

我收到以下錯誤:

Exception in thread "main" java.text.ParseException: Unparseable date: "01/06/2015 8:20 

我用下面的代碼再有同樣的問題:

SimpleDateFormat fech = new SimpleDateFormat(" yyyy/MM/dd HH:mm:ss"); 
Date date = (Date) fech.parse(data[i]); 
System.out.println(date); 

哪給出錯誤

Exception in thread "main" java.text.ParseException: Unparseable date: "00015/06/01 08:20:15" 

我該如何解決這個問題?

+5

您的日期字符串不匹配模式,就像錯誤消息告訴你。 – Keppil

+2

只是一個猜測,但...「01/06/2015」不包含「hh:mm」部分。第二件事情有:a)中間有兩個空格,b)一年的「00015」,這個不是正確的。 –

+0

首先是「00015/06/01 08:20:15」 和另一個 「01/06/2015 8:20:10」 –

回答

2

使用SimpleDateFormat時,日期格式必須與完全匹配。在你的例子中,你包含日期,但是在你的日期格式中,你也指定了小時和分鐘。如果你的數據有這個文本,它就會起作用。例如,使用您的第一個例子:

import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.HashMap; 
import java.util.Map; 

public class DateDemo { 
    public static void main(String args[]) throws Exception { 
    String yourData = "01/06/2015"; 
    String matchingData = "01/06/2015 13:00"; 
    SimpleDateFormat fechas = new SimpleDateFormat("dd/MM/yyyy hh:mm"); 

    Date matchingDate = fechas.parse(matchingData); 
    System.out.println("String: \"" + matchingData + "\" parses to " + matchingDate); 
    Date yourDate = fechas.parse(yourData); 
    System.out.println("String: \"" + yourData + "\" parses to " + yourDate); 
    } 
} 

此輸出:

String: "01/06/2015 13:00" parses to Mon Jun 01 13:00:00 CDT 2015 
Exception in thread "main" java.text.ParseException: Unparseable date: "01/06/2015" 
     at java.text.DateFormat.parse(DateFormat.java:366) 
     at Demo.main(Demo.java:14) 
0

在你的日期String以及在SimpleDateFormat()模式應符合: -

SimpleDateFormat("dd/MM/yyyy hh:mm")將與01/06/2015 2:24

工作

AND

SimpleDateFormat("yyyy/MM/dd HH:mm:ss")2015/06/01 08:20:15

有關完整列表的工作,請參閱官方文檔甲骨文here

0
import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class Test { 
    public static void main(String[] args) { 
     String dateText = "18/07/2015 05:30";   
     DateFormat fechas = new SimpleDateFormat("dd/MM/yyyy hh:mm"); 
     try { 
      Date parse = fechas.parse(dateText); 
      System.out.println("Date : " + fechas.format(parse)); 
     } catch (ParseException ex) { 
      Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    }  
} 

我做這樣的源代碼

+0

我還有同樣的問題 –