2017-07-17 399 views
-7

我想查找给定时间戳和当前系统时间之间的差异。查找两个时间戳之间的差异

我的代码,

​​

DIFF我得到的不是我expacting。

Ex。 (1500462813 * 1000)-1500290013000 = 172800000

这是日期1975年6月24日的,上午5时30分〇〇秒 我期待2017年7月19日,下午4点43分33秒。

想要找到当前系统时间和给定时间戳之间的差异,以运行剩余时间的计时器。

+2

你会得到什么,你期望什么? –

+6

两个时间戳之间的差异不是日期。这是......不同之处。 –

+0

如何找到时间戳的差异? –

回答

2

试试这个方法:

public static long getDateDiff(long timeUpdate, long timeNow, TimeUnit timeUnit) 
{ 
    long diffInMillies = Math.abs(timeNow- timeUpdate); 
    return timeUnit.convert(diffInMillies, TimeUnit.MILLISECONDS); 
} 

它给你任何单位(天,年,...)的差异。

long timestamp1 = 1500462813000; 
long timestamp2 = System.currentTimeMillis(); 
long diffInDays = getDateDiff(timestamp1, timestamp2, TimeUnit.DAYS); 
+2

本答案使用现在遗留的麻烦的旧日期时间类,由java.time类代替。 –

+0

你是对的 - 我编辑了我的答案 - 它也没有日期工作。只需要时间戳。 –

1

尝试:

long diff= System.currentTimeMillis() - givenTimeStamp; 
+4

解释会很好。你怎么知道这真的回答了这个问题? –

+0

@TimBiegeleisen你还不明白的问题 –

0

我认为你应该找到这样

long timeStamp=System.currentTimeMillis(); 
long diff=(timeStamp-1500462813000); 

System.currentTimeMillis()的差异会比你现在

5

首先,我看到你正在使用的基本类型总是更大longLong。这不是一个好主意。如果你没有很好的理由使用这个类,那么只需使用long即可。

您初始化类Long一个整数:

Long timeStamp=1500462813; 

这实际上是一个编译器错误。所以你的代码不能被编译。

如果我理解你的问题是正确的,你希望剩下的时间到达日期。你实际上得到它。以毫秒为单位。您的结果是保留在时间戳日期的时间。

这个结果本身不是Date。这只是毫秒到你想要的日期。

+0

如何找到日期 –

+2

你想要什么日期?你想要有所不同。你拥有了它。该差异不能被解释为日期。 – sgerodes

+1

也许你可以解释更多关于你的问题。给我们写你想做的事,妓院。据我了解,你做的事情是正确的。你只是不明白你得到了什么。 – sgerodes