2013-12-23 29 views
2

我得到以下dd-MM-yyyy,dd/MM/yyyy不同的日期格式,yyyy-MM-ddyyyy/MM/dd如何檢查不同的日期格式在java中

SimpleDateFormat sm1 = new SimpleDateFormat("dd-MM-yyyy"); 
String date = "01-12-2013"; 
System.out.println("Date 1 is "+sm1.parse(date)); 
date = "2013-12-01"; 
System.out.println("Date 1 is "+sm1.parse(date)); 

同樣簡單的日期格式給出了以下結果eventhough日期格式是錯誤的(即:-2013- 12-01)。下面的結果。

Date 1 is Sun Dec 01 00:00:00 IST 2013 
Date 1 is Sun Jun 05 00:00:00 IST 7 

回答

0

您的日期格式爲dd-MM-yyyy。這意味着解析器需要一些日期,月份和年份格式。

the SimpleDateFormat documentationNumber類型格式化程序中的模式字母數是最小值。所以,雖然2013在我們的腦海中是沒有意義的,但它符合格式化程序的界限。

您提供了2013-12-01以符合該格式。格式化程序正在做的是提供12月1日(在此處插入時區),然後添加2,013天。

原來是June 6, 7 AD。您的時區有一些擺動空間(我不確定IST的五個時區中的哪一個代表is actually yours)。

所以,不要相信...格式化程序是正確的。非常小心請注意您指定或允許的日期格式!

如果您不想解析,請在您的實例sm1上指定setLenient(false)

+0

感謝您的解釋... – Abdul

1

我試過Jigar Joshi的回答。代碼:====================== =================

SimpleDateFormat sm1 = new SimpleDateFormat("dd-MM-yyyy"); 
sm1.setLenient(false); 
String date = "01-12-2013"; 
System.out.println("Date 1 is "+sm1.parse(date)); 
date = "2013-12-01"; 
System.out.println("Date 1 is "+sm1.parse(date)); 

=========================結果========================================

Date 1 is Sun Dec 01 00:00:00 CST 2013 
Exception in thread "main" java.text.ParseException: Unparseable date: "2013-12-01" 
    at java.text.DateFormat.parse(DateFormat.java:337) 
    at workflow.Test.main(Test.java:14)