2014-03-07 48 views
2

我计算两个时间戳这是在以下格式计算差值显示负值

2013年7月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年7月22日05:24:24.77

请求日期:2013年7月22日05:24:24.663

结果是:

DIFF - > - 586

应该减去像这样“770-663”改为将时间戳减去“77-663”

任何人都可以请建议我应该做什么改变还是有任何其他方式做?

预先感谢

+1

77是指77而不是770(即它是77ms过去,而不是770ms过去)。因此,在您的示例中,请求日期*在*响应日期后*,差异为负值是正常的。 – assylias

回答

5

在SimpleDateFormat的SSS装置的毫秒数,而不是分数秒,即对于SimpleDateFormat的663> 77.但是Timestamp.toString格式时间戳yyyy-mm-dd hh:mm:ss.fffffffff格式,其中fffffffff是分数秒。使用java.sql.Timestamp.valueOf(str)来解析什么是Timestamp.toString产生的