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

计算两个java.sql.Timestamp之间的差值显示负值,java,timestamp,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.getTi

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

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

它应该减去这样的内容,而不是减去时间戳,即“77-663”

有谁能建议我应该做些什么改变,或者有没有其他的方法


提前感谢

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

77表示77,而不是770。(即过去77毫秒,而不是过去770毫秒)。因此,在您的示例中,请求日期在响应日期之后,差异为负值是正常的。