2012-11-07 84 views
1

這是我的下面的代碼,它將字符串轉換爲長數據類型。有效字符串的NumberFormatException

/** 
    * Parses a String into primitive long 
    * @param str 
    * @return 
    */ 
public static long parseLong(String str){ 
     try { 
      long result = Long.parseLong(str); 
      return result; 
     } catch(NumberFormatException ex){ 
      //do nothing or log it 
      return 0L; 
    } 
} 

但該字符串2006-09-11 22:01:13時,它被傳遞給上述parseLong方法,我總是得到這個exception-

java.lang.NumberFormatException: For input string: "2006-09-11 22:01:13" 

我需要轉換String to Long。在這種方法中,任何類型的字符串都可以被傳遞。所以,當我調試代碼時,我發現它正在拋出此字符串的異常 - "2006-09-11 22:01:13"。據我的理解,它不應該拋出異常嗎?因爲我們可以通過使用Long.parseLong方法將任何字符串轉換爲long?

任何人都可以解釋爲什麼我得到這個異常?由於我現在很困惑..: -/

+0

你有什麼期望從這種方法的結果呼叫? –

+0

我認爲這個問題是:什麼是Java的等效的PHP的strtotime。 – Prasanth

+0

我想將字符串轉換爲長。我可以將任何字符串傳遞給該方法,所以當我調試代碼時,我發現這個'2006-09-11 22:01:13'作爲字符串傳遞給了該方法。根據我的理解,任何字符串都應該通過'Long.parseLong'轉換爲Long。對嗎?如果是,那麼爲什麼這個異常會被拋出? – ferhan

回答

1

帶特殊字符的字符串不能直接解析爲long或int。如果你想解析它爲長或任何類型首先用(「」)替換特殊字符。

或以其他方式如果要分析上面的字符串,如日期,然後使用simpleDate格式,這樣

SimpleDateFormat parser= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
java.util.Date d = null; 

try { 
    d = parser.parse(str); 
      System.out.println("Parsed date is "+d); 
} catch (java.text.ParseException e) { 
    e.printStackTrace(); 
} 

然後輸出將是 Parsed date is Mon Sep 11 22:01:13 IST 2006

+0

謝謝拉姆。所以你說,任何帶有特殊字符的字符串(比如什麼?)不能被解析爲long或int?如果是的話,我怎樣才能使上述方法更通用,以處理我在問題中發佈的所有場景,以便將其從字符串數據類型轉換爲Long? – ferhan

+0

你想把字符串轉換爲'20060911220113'? –

+0

我想,我明白了你的觀點。所以基本上我不能將這個字符串'2006-09-11 22:01:13'表示爲長數據類型,因爲它是?我需要刪除特殊字符才能使其合適很久?我在想,我可以將長長的字符串'2006-09-11 22:01:13'表示爲'Long'。 – ferhan

1

因爲您的日期String不是Long或開頭的數字。您想使用SimpleDateFormat將日期字符串解析爲有效的Date對象。

0

它必須是一個精確的整數字符串。例如「12345676」只是一個數字。 「2006-09-11 22:01:13」包含比「 - 」(連字符),「:」(冒號),「」(空格)等數字更多的東西,它們不是數字。

+0

對此也有限制嗎?就像我們無法將String轉換爲Long,如果它有類似上面提到的那樣的東西?據我的理解,我認爲我們可以通過使用Long.parseLong方法將任何字符串轉換爲long。我對嗎? – ferhan

+0

@TechGeeky不,「Long.parseLong」只分析代表有效「long」值的字符串,而沒有其他字符。 –

+0

感謝丹尼爾,所以我怎樣才能使上述方法更通用,以處理我發佈在問題中的所有場景,以便將它從字符串數據類型轉換爲Long? – ferhan

相關問題