1

これは、文字列を長いデータ型に変換する以下のコードです。

/**
     * 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常にこの例外が発生します-

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

変換する必要がありString to Longます。そして、このメソッドでは、任意のタイプの文字列を渡すことができます。そのため、コードをデバッグしているときに、この文字列に対して例外がスローされていることがわかりました"2006-09-11 22:01:13"。私の理解では、例外をスローするべきではありませんか?Long.parseLongメソッドを使用して任意の文字列をlongに変換できるのでしょうか?

なぜ私がこの例外を受け取っているのか誰かが説明できますか?私は今混乱しているので..:-/

4

3 に答える 3

1

あなたの日付StringはそもそもLong数字でもないからです。SimpleDateFormatを使用して、日付文字列を有効なDateオブジェクトに解析します。

于 2012-11-07T03:37:08.553 に答える
1

特殊文字を含む文字列は、long またはint. long 型または任意の型に解析する場合は、最初に特殊文字を ("") に置き換えます。

または、上記の文字列を日付として解析する場合は、次のように 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

于 2012-11-07T03:45:49.300 に答える
0

文字列に保持された正確な整数でなければなりません。たとえば、「12345676」は数字にすぎません。「2006-09-11 22:01:13」には、数字以外の「-」(ハイフン)、「:」(コロン)、「 」(スペース)など、数字以外の要素がたくさん含まれています。

于 2012-11-07T03:38:22.183 に答える