【问题标题】:Java Duration giving different result to ExcelJava Duration 为 Excel 提供不同的结果
【发布时间】:2018-11-07 00:44:57
【问题描述】:

有一种方法可以计算 2 个 LocalDateTimes 之间的差异。我已经在 Excel 中计算了一些测试数据,但是 Java 方法与我的 Excel 公式不相符。我猜 ym Excel 公式是错误的,但谁能告诉我为什么?

    private Duration difference(LocalDateTime request, LocalDateTime response) {
    Duration duration = Duration.between(request, response);
    System.out.println("difference: " + duration.toMillis());
    return duration;
}

我的输入数据:
请求:2018-02-12T13:43:46.456 响应:2018-02-12T14:43:54.123

Excel 公式结果:3608333 毫秒 Java方法:3607667毫秒

我的 excel 公式是公认的答案here

【问题讨论】:

  • 看最后三位,好像excel公式混淆了request和response。 xxx123 -xxx456 应该是 xxx667,而不是 xxx333。
  • 在链接的答案中,我将您的第一个公式读作=LEFT(A2,2),但我的 Excel 不会接受它作为公式。它说“这个公式有问题。”没有进一步的解释。 :-(
  • 谢谢@pnuts,这行得通。

标签: java excel duration localdate


【解决方案1】:

运算符 (OP) 是“困惑”的,Excel 不是。采用与引用的已接受答案相同的方法:

Row1 和 Row6 中显示的公式复制后用于 Rows3、4、5 和 7。

从示例的时间元素中减少了麻烦(但与3607667 的结果相同):

=(TIMEVALUE(A5)-TIMEVALUE(A4))*86400000

或者如果要应用于与上述相同单元格中的整个 DateTTime 字符串:

=(TIMEVALUE(RIGHT(A5,12))-TIMEVALUE(RIGHT(A4,12)))*86400000

Excel 结果在所有这些情况下:

3607667

【讨论】:

  • 通常我们不应该发布“无法复制”或“你的代码对我有用”作为答案,但有了这种级别的解释和奖励信息,我认为这是有道理的。 +1。
【解决方案2】:

Malte Hartwig 是对的。

“看最后三位,好像excel公式混淆了request和response。xxx123 -xxx456应该是xxx667,而不是xxx333”

【讨论】:

    猜你喜欢
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    相关资源
    最近更新 更多