【问题标题】:How to subtract two times of different dates in java [duplicate]如何在java中减去两次不同的日期[重复]
【发布时间】:2020-02-03 13:54:42
【问题描述】:

我如何减去两个不同日期的两次,例如 2019/07/24 的 23:20:45 和 2019/07/25 的 00:10:32。 它应该返回我这两个小时:分钟:秒之间的差异。

我必须注意人们在晚上登录系统的持续时间,但是随着日期的变化,这样做有点困难,所以我需要一些 java 代码,它会以小时:分钟:秒为单位返回准确的时间.

【问题讨论】:

  • 无论日期如何!!!那么 2019/07/24 的 20:00:00 和 2019/07/25 的 20:00:00 会返回 0 吗?我不这么认为。改写你的问题。
  • 改写了问题。
  • 你可以使用毫/纳秒
  • 在链接的原始问题中我特别推荐the answer by Vitalii Fedorenko using java.time

标签: java


【解决方案1】:

您的日志应该使用 UTC 时间记录用户的活动,以标准 ISO 8601 格式的文本编写。末尾的 Z 表示与 UTC 的偏移量为零时分秒,发音为“Zulu”。示例:2019-07-24T23:20:45Z

Instant 类代表 UTC 中的一个时刻。

Instant instant = Instant.now() ;
String output = instant.now();

解析。

Instant start = Instant.parse( "2019-07-24T23:20:45Z" ) ;

计算经过的时间。

Duration d = Duration.between( start , stop ) ;

以标准 ISO 8601 文本报告持续时间,PnYnMnDTnHnMnS

String output = d.toString() ;

【讨论】:

    【解决方案2】:
    LocalDateTime from = LocalDateTime.parse("2019/07/24 23:20:45", formatter);
    LocalDateTime to = LocalDateTime.parse("2019/07/25 00:10:32", formatter);
    System.out.println(Duration.between(to.toLocalTime(),from.toLocalTime()).getSeconds());
    

    所以,由于要求最近发生了变化,现在是关于时间之间的总持续时间,而不是仅时间部分之间的持续时间,省略日期部分,整个事情变得更简单,那么它就是只是

    System.out.println(Duration.between(to,from).getSeconds());

    ...和一个重复的问题...

    【讨论】:

    • 如何减去没有日期的时间有什么意义?我很困惑。
    • 知道了。您可能需要注意,在您的回答中,问题似乎已被编辑,改变了要求。
    猜你喜欢
    • 2012-10-13
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2011-04-01
    • 2016-08-31
    相关资源
    最近更新 更多