我像这样2018-11-27T09:51:31.832107+00:00
从服务器获取时间,然后我OffsetDateTime.parse
解析时间。我想区分两次OffsetDateTime.now - OffsetDateTime.parse
。
减去后,我必须以以下格式显示经过的时间:14 min 12 seconds
。如何正确获得时间跨度?
答案 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)
转换两次(以毫秒为单位),然后从第一毫秒中减去第二毫秒,然后将结果格式化为口头日期。