java.lang.NumberFormatException:对于输入字符串:";2012年12月4日14:44“;

java.lang.NumberFormatException:对于输入字符串:";2012年12月4日14:44“;,exception,numbers,format,Exception,Numbers,Format,我有一个程序,代码如下: 在XXX.java中,我使用String.valueOf(date.getTime())strong文本将SVC_APPR_DT_(单位:毫秒)与从Oracle数据库中的记录中获取的日期值一起设置。它存储为字符串: private void setApprovalDateProperty(Date date) { setAdditionalProperty(SVC_APPR_DT_IN_MILLIS, String.valueOf(date.getTime())

我有一个程序,代码如下:

在XXX.java中,我使用String.valueOf(date.getTime())strong文本将SVC_APPR_DT_(单位:毫秒)与从Oracle数据库中的记录中获取的日期值一起设置。它存储为字符串:

private void setApprovalDateProperty(Date date) {
    setAdditionalProperty(SVC_APPR_DT_IN_MILLIS, String.valueOf(date.getTime()));
}
在YYY.java中,我使用newdate(Long.valueOf())返回日期。

对于其中一条记录,它抛出以下错误,其中“04/12/2012 14:44:38”是数据库中记录的日期

For input string: "04/12/2012 14:44"
java.lang.NumberFormatException: For input string: "04/12/2012 14:44"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Long.parseLong(Long.java:412)
    at java.lang.Long.valueOf(Long.java:518)
    at YYY.getApprovalDate(YYY.java:634)

我已经检查了数据库,数据库中的许多记录都可以毫无问题地处理,除了这一条。我可以知道这个错误的可能原因吗?我想模拟这个问题,但我不知道如何复制它。有人有什么建议吗?

听起来数据库中的一条记录插入了错误的版本,或者数据库已损坏

在调用Long.valueOf之前,是否检查了approvalDateInMillis的值

你可以加上

if (!approvalDateInMillis.matches("^[0-9+]$"))
  throw new Error(
    String.format("Invalid approvalDateInMillis format: '%s'", approvalDateInMillis));
在返回语句之前,然后继续调试以查看数据库中的实际内容

For input string: "04/12/2012 14:44"
java.lang.NumberFormatException: For input string: "04/12/2012 14:44"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Long.parseLong(Long.java:412)
    at java.lang.Long.valueOf(Long.java:518)
    at YYY.getApprovalDate(YYY.java:634)