2012-07-14 29 views
0

我需要從接收字符串變量的構造函數中驗證日期mm/dd。我嘗試了幾種方法,但沒有運氣。最後我想是將字符串轉換爲ASCII碼和驗證方式,但不工作之一:在java構造函數中提取日期

public Dated(String dateStr) 
{ 
this.dateStr = dateStr; 
for (int i = 0; i < dateStr.length(); i++) 
{ 
    char c = dateStr.charAt(i); 
    asciiValues = (int) c;  // change each string character to ASCII value 

} 

} 

public void display() 
{ 
    System.out.println(asciiValues); 
} 
+2

'mm/dd'或哪一年?你如何處理閏年? – 2012-07-14 06:21:31

回答

0

據我知道你在解析字符串值困擾。對。

在java中,我們有一些工具可用來驗證這些東西。

我將使用可以驗證日期,並轉換到DateString

public class Dated{ 

    private SimpleDateFormat sdf = new SimpleDateFormat("MM/dd") // M --> Month; d--> Day 

    public Dated(String dateStr) throws Exception{ 
    try{ 
     Date d = sdf.parse(dateStr); 
     System.out.println(d); 
    } catch (ParseException e) { 
     // you can throw that exception just to 
     // avoid creating the object of this class 
     throw e; 
    } 
    } 
} 

但請記住,你沒有被@JB Nizet驗證日期爲閏年爲提SimpleDateFormat實用工具類。 你也可以通過驗證年來克服這一點。

在上面的代碼中,如果您通過「02/29」,您將獲得3月1日的日期。 1970年不是正確的日期不是閏年。

所以我會在我的日期驗證中包括年份。

要添加年,您可以將SimpleDateFormat更改爲下圖。

private SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); // y --> Year 
+1

你最好從構造函數中拋出ParseException,並且根本不要使用try/catch。 – 2012-07-14 07:09:09

+0

是的,這一切都取決於你希望你的類構造函數行爲的方式。我添加了try/catch,這樣他就可以有一個好主意。 – 2012-07-14 07:13:28