解析日期时的java.lang.NullPointerException

时间:2014-09-16 06:47:47

标签: java web-services hibernate

我从其他客户发送请求时遇到异常         这是我的DTO课程

        private String fromDate;
        private String toDate;

        public String getFromDate() {
            return fromDate;
        }
        public void setFromDate(String fromDate) {
            this.fromDate = fromDate;
        }
        public String getToDate() {
            return toDate;
        }
        public void setToDate(String toDate) {
            this.toDate = toDate;
        }

请求数据包是这种格式如何以这种格式发送日期,但它将采用字符串

{
" toDate": "2014/07/01",
  " fromDate ": "2014/05/01",
  " imeiNo ": "1234567890",
  " phoneNumber ": 1234567890,
  " emailId ": ""
}

这是我在helper类中转换的方法

private static Timestamp convertStringDateToTimestamp(String stringDate)
    {

        DateFormat formatter;
        Date date = null;
        formatter = new SimpleDateFormat("yy-MM-dd");
        try {
            date = (Date) formatter.parse(stringDate);
        } 
        catch (ParseException e) {

            e.printStackTrace();
        }
        java.sql.Timestamp timeStamp = new Timestamp(date.getTime());

        return timeStamp;
    }

但在我的服务器中获取此异常

java.lang.NullPointerException at org.omnypay.mobileapp.webservices.helper.TransactionHelper.convertStringDateToTimestamp(Tra

请帮帮我

2 个答案:

答案 0 :(得分:0)

如果格式化程序未将字符串解析为日期,则date变量为null,您无法调用date.getTime()

在该行之前添加空检查。

OR

Jon说,你需要更好地处理Exception。打印堆栈跟踪后抛出异常,或返回一个值,以便程序执行不会继续执行方法的其余部分。

答案 1 :(得分:0)

您的日期为/作为分隔符,但您将-定义为格式化程序中的分隔符。而且你还有像2014年那样的全年而不是14年改为

formatter = new SimpleDateFormat("yyyy/MM/dd");