异常:java.lang.NumberFormatException将String转换为long

时间:2013-09-01 19:27:59

标签: java

我正在将具有'1520056800`的字符串转换成具有日期的字符串。但我得到NumberFormatException来转换此

请帮帮我。

long expiryDateMS = Long.parseLong(responseArray[0].replaceAll(" ", ""));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
Date date = new Date(expiryDateMS);

堆栈跟踪

09-02 00:52:28.984: E/AndroidRuntime(12025): Caused by: java.lang.NumberFormatException: 1520056800
09-02 00:52:28.984: E/AndroidRuntime(12025):    at java.lang.Long.parse(Long.java:353)
09-02 00:52:28.984: E/AndroidRuntime(12025):    at java.lang.Long.parseLong(Long.java:344)
09-02 00:52:28.984: E/AndroidRuntime(12025):    at java.lang.Long.parseLong(Long.java:311)
09-02 00:52:28.984: E/AndroidRuntime(12025):    at com.example.astrill_openvpn.MainOnOffActivity.onCreate(MainOnOffActivity.java:99)
09-02 00:52:28.984: E/AndroidRuntime(12025):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-02 00:52:28.984: E/AndroidRuntime(12025):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)

2 个答案:

答案 0 :(得分:3)

字符串中可能包含不可见或无效的字符。 请尝试this post了解详情。

答案 1 :(得分:0)

此代码应该可以胜任。所以我猜你有一些编码/特殊字符问题。试试这个来验证你有一个真正的ASCII编码号码:

String str = responseArray[0].replaceAll(" ", "");
for (int i = 0; i < str.length(); ++i)
{
    char a = str.charAt(i);
    if (!('0' <= a && a <= '9')) System.out.println(a + " is not a valid digit!");
}