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。在此方法中,可以传递任何类型的 String。因此,当我调试代码时,我发现它正在为这个字符串抛出异常 - "2006-09-11 22:01:13"。据我了解,它不应该抛出异常,对吧?因为我们可以通过使用方法将任何字符串转换为长字符串Long.parseLong吗?

谁能解释为什么我得到这个例外?因为我现在很困惑.. :-/

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 回答