计算两个java.sql.Timestamp之间的差异显示负值

时间:2014-03-07 11:17:10

标签: java timestamp

我正在计算两个时间戳之间的差异,其格式如下

  

2013-07-22 05:24:24.77

我使用以下方法计算两个时间戳之间的差异

DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date resDate = sdf.parse(responseData.getTimestamp().toString());
Date reqDate = sdf.parse(requestData.getTimestamp().toString());
System.out.println("response-->"+responseData.getTimestamp());
System.out.println("request-->"+requestData.getTimestamp());
System.out.println("diff-->"+(resDate.getTime()-reqDate.getTime()));

在以下情况下,两个时间戳之间的差异为负。例如

  

回复日期:2013-07-22 05:24:24.77

     

申请日期:2013-07-22 05:24:24.663

结果是:

  

存在 - > -586

它应该减去类似“770-663”的内容,而不是将时间戳减去“77-663”

任何人都可以建议我应该做出哪些改变,或者有其他办法吗?

提前致谢

1 个答案:

答案 0 :(得分:5)

SimpleDateFormat中的

SSS表示SimpleDateFormat 663>的毫秒数,而不是小数秒。但是Timestamp.toStringyyyy-mm-dd hh:mm:ss.fffffffff格式格式化时间戳,其中fffffffff是小数秒。使用java.sql.Timestamp.valueOf(str)解析Timestamp.toString生成的内容