如何找到两次之间的差异?

时间:2018-12-21 09:29:19

标签: java android date time

我像这样2018-11-27T09:51:31.832107+00:00从服务器获取时间,然后我OffsetDateTime.parse解析时间。我想区分两次OffsetDateTime.now - OffsetDateTime.parse

减去后,我必须以以下格式显示经过的时间:14 min 12 seconds。如何正确获得时间跨度?

3 个答案:

答案 0 :(得分:2)

了解方法很简单:

// Parse input.
String timeFromServer = "2018-11-27T09:51:31.832107+00:00";
OffsetDateTime odt = OffsetDateTime.parse(timeFromServer);

// Capture the current moment. 
OffsetDateTime now =  OffsetDateTime.now(ZoneOffset.UTC)

// Get the difference
Duration difference = Duration.between(odt,now);

// Extract details: Convert to minutes and seconds
long minutes = difference.toMinutes();
difference = difference.minusMinutes(minutes);
long seconds = difference.getSeconds();

// Format into string in desired form
String formattedDiff = String.format("%d min %d seconds", minutes, seconds);
System.out.println(formattedDiff);

现在运行时,由于您的示例字符串来自上个月,因此我们需要花费大量时间。

  

34613分钟38秒

唯一棘手的部分是从Duration对象中分离出分钟和秒。我先取出分钟,然后减去分钟,只剩下秒(或更短)。从Java 9开始,Duration改进了对获取单个时间单位的支持(请参阅to…Part方法),但我想您还不能在Android上使用它。

仅用于计算差值时,传递给OffsetDateTime.now的时区或偏移量都没有关系。

答案 1 :(得分:0)

您在android中有一个称为“比较”的方法,它可能会对您有所帮助,请参阅此处的文档:

https://developer.android.com/reference/java/time/OffsetDateTime#compareTo(java.time.OffsetDateTime)

答案 2 :(得分:0)

转换两次(以毫秒为单位),然后从第一毫秒中减去第二毫秒,然后将结果格式化为口头日期。