【发布时间】:2013-09-01 19:27:59
【问题描述】:
我正在将具有“1520056800”的字符串转换为 long 以具有日期。但我得到 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)
【问题讨论】:
-
我 100% 确定你的字符串中有一些无效的不可打印(所以你看不到它)字符,如果我使用
long expiryDateMS = Long.parseLong("1520 056800 ".replaceAll(" ", ""));它可以工作,所以请检查responseArray[0]内容 -
@BackSlash 我已经检查了内容..它的
1520056800 -
这也是我的猜测!也许一些你看不到的cr lf
-
也许你应该把你的链式调用分成两个语句,这样你就可以看到你要解析的内容。你知道,通过组合它们不会节省任何东西。但是你大大增加了调试难度。
-
@Android 重新检查我的评论,我说 invalid non-printable (so you don't see it) 循环遍历你的字符串并打印每个字符。或者只是打印
responseArray[0].replaceAll(" ", "").length(),如果它输出的内容大于10,则说明其中包含无效字符。
标签: java