在Java中将字符串(日期)转换为毫秒时遇到困难

时间:2018-11-18 05:05:36

标签: java string date string-parsing

我有以下代码。我正在通过start = "2016/01/01 23:59:59"end = "2017/01/01 23:59:59"

func(String start, String end) {

    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date1 = sdf1.parse(start);
    long startTime = date1.getTime();
    \\System.out.println(startTime);

    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date2 = sdf2.parse(end);
    long endTime = date2.getTime();
    \\System.out.println(endTime);

}

我遇到以下错误

error: unreported exception ParseException; must be caught or declared to be thrown Date date = sdf.parse(time); ^

我该如何纠正?而且,为什么它会向我显示此错误?

1 个答案:

答案 0 :(得分:1)

DateFormat#parse()方法抛出一个ParseException。这意味着,如果将字符串解析为日期时出了点问题,则可能会抛出此异常。

一种解决方法是仅声明您的方法来引发此异常,例如

public long yourMethod() throws ParseException {
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date1 = sdf1.parse(start);
    long startTime = date1.getTime();

    return startTime;
}

或者,也可以从错误消息中获取建议,您可以将代码放入try catch块中:

public long yourMethod() {
    long startTime = -1L;
    try {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date1 = sdf1.parse(start);
        startTime = date1.getTime();
    }
    catch (ParseException e) {
        // something went wrong
    }

    return startTime;
}