【问题标题】:Calculating difference between two java.sql.Timestamp shows negative value计算两个 java.sql.Timestamp 之间的差异显示负值
【发布时间】:2014-04-10 12:20:41
【问题描述】:

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

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"

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

提前致谢

【问题讨论】:

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

标签: java timestamp


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多