2014-03-07 119 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產生的