在Java中将时间戳字符串转换为long

Tha*_*nga 6 java string numberformatexception

我必须从DB中获取时间戳并仅检索时间并比较两次.

//下面是字符串值

 String st1 = "2015-07-24T09:39:14.000Z";      
 String st2 = "2015-07-24T09:45:44.000Z";
Run Code Online (Sandbox Code Playgroud)

//只检索时间09:39:14

 String s = st1.substring(st1.indexOf("T") + 1, st1.indexOf(".0"));
Run Code Online (Sandbox Code Playgroud)

//字符串为Long.

 Long time = Long.parseLong(s);

 Long tim1=Long.valueOf(s).longValue();
Run Code Online (Sandbox Code Playgroud)

错误:

java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Long.parseLong(Unknown Source)
    at java.lang.Long.parseLong(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

如何做以上操作.这不是重复的,这个和这个..我已经检查了所有的QA ..

小智 10

试试这种方式,示例代码:

java.sql.Timestamp ts2 = java.sql.Timestamp.valueOf("2015-07-24T09:45:44.000Z");
long tsTime2 = ts2.getTime();
Run Code Online (Sandbox Code Playgroud)


The*_*rog 3

另一种选择是使用 SimpleDateFormat(与 JODA 时间相比可能不是最好的)

public static void main(String[] args) throws ParseException {
        String st1 = "2015-07-24T09:39:14.000Z";
        String st2 = "2015-07-24T09:45:44.000Z";

        String time1 = st1.substring(st1.indexOf("T") + 1, st1.indexOf(".0"));
        String time2 = st2.substring(st2.indexOf("T") + 1, st2.indexOf(".0"));

        Date dateTime1 = new java.text.SimpleDateFormat("HH:mm").parse(time1);
        Date dateTime2 = new java.text.SimpleDateFormat("HH:mm").parse(time2);

        System.out.println(dateTime1.after(dateTime2));

    }
Run Code Online (Sandbox Code Playgroud)