这是我的下面的代码,它将字符串转换为long数据类型。
/**
* 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
方法将任何字符串转换为long吗?
任何人都可以解释为什么我会得到这个例外吗?我现在很困惑..: - /
答案 0 :(得分:1)
因为您的日期String
不是Long
或开头的数字。您希望使用SimpleDateFormat将日期字符串解析为有效的Date对象。
答案 1 :(得分: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
答案 2 :(得分:0)
它必须是字符串中保存的精确整数。例如“12345676”只不过是一个数字。 “2006-09-11 22:01:13”包含的内容比“ - ”(连字符),“:”(冒号),“”(空格)等数字更多,不是数字。