Java NumberFormatException中的Calendar对象毫秒

时间:2014-06-18 09:10:23

标签: java calendar simpledateformat

使用日历对象获取毫秒

Calendar.getInstance().getTimeInMillis()

但在极少数情况下,它会返回无效的长毫秒。

例如:.4201442014EE44

以浮点返回。为什么会这样?因为我将这个毫秒转换为某种日期格式。在转换期间它抛出" NumberFormatException"。正如我在做SimpleDateFormat的格式(毫秒)。

例外:

java.lang.NumberFormatException: For input string: ".4201442014EE44"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
at java.lang.Double.parseDouble(Double.java:540)
at java.text.DigitList.getDouble(DigitList.java:168)
at java.text.DecimalFormat.parse(DecimalFormat.java:1321)
at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1794)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1455)
at java.text.DateFormat.parse(DateFormat.java:355)

1 个答案:

答案 0 :(得分:1)

SimpleDateFormat.format(Object)可以格式化DateNumber个实例。传递的数字将转换为长,然后将其解释为自1970-01-01 00:00:00.0000以来的毫秒数。

传递任何其他内容都会导致java.lang.IllegalArgumentException: Cannot format given Object as a Date

一些例子:

DateFormat format = new SimpleDateFormat("EEE, dd. MMMM yyyy HH:mm:ss");
format.format(new Date());
format.format(System.currentTimeMillis());

使用日历:

format.format(Calendar.getInstance().getTime());
format.format(Calendar.getInstance().getTimeInMillis());

任意数字:

format.format((double) System.currentTimeMillis());
format.format(BigInteger.valueOf(System.currentTimeMillis()));