两个日期之间的差异(Android)

P. *_*rov 0 java android date-arithmetic

我需要在两个日期之间找到一个时间。让我们说dateStart = 1470712122173dateStop = 1470712127320。这两个日期之间的差异等于5147 所以,根据这个我希望得到一个答案 = 5 秒,但我看到19:00:05. 这19个小时从哪里来?

毫秒代码 (= 5147) -> 时间:

private string foo(long dateStart, long dateStop) {
    long diff = dateStop - dateStart;
    DateFormat simple = SimpleDateFormat.getTimeInstance(); 
    Date date = new Date(diff); 
    return simple.format(date);
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的解释。

xia*_*.li 5

您需要正确理解基本概念。当您在两个Date对象之间取差异时,您将获得两个时间点之间的持续时间,试图将差异视为另一个时间点是没有意义的。

下面是使用 Java 8 时间 API 获取两个时间点 ( java.time.Instant)之间差异的示例:

import java.time.Duration;
import java.time.Instant;

public class TimeDifferenceSample {

    static Duration diff(Instant start, Instant end) {
        return Duration.between(start, end);
    }

    public static void main(String [] args) {
        long start = 1470712122173L;
        long end = 1470712127320L;

        Duration dur = diff(Instant.ofEpochMilli(start), Instant.ofEpochMilli(end));
        System.out.println(dur.getSeconds() + " seconds");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

5 seconds
Run Code Online (Sandbox Code Playgroud)

对于Android,我不是专家,但您可以查看提供类似功能的The Joda Time Project。我还在这里找到了一个Android 版本