我想找出给定时间戳和当前系统时间之间的差异。
我的代码,
Long timeStamp=1500462813;
long diff=(timeStamp*1000L) - System.currentTimeMillis();
我得到的差异不是我所表达的。
实施例。 (1500462813 * 1000)= -1500290013000 172800000
这是日期为6/24/1975,5:30:00 AM 我期待7/19/2017,下午4:43:33。
想要找出当前系统时间和给定时间戳之间的差异,以便为剩余时间运行计时器。
答案 0 :(得分:6)
首先,我看到您使用的是原始类型long
和类Long
。这不是一个好主意。如果您没有充分的理由使用该课程,请更好地使用long
。
您正在使用整数初始化类Long
:
Long timeStamp=1500462813;
这实际上是一个编译器错误。所以你的代码无法编译。
如果我理解你的问题是正确的,你希望剩下的时间到达日期。你实际上是在得到它。以毫秒为单位。您的结果是时间戳日期的剩余时间。
此结果本身不是Date
。这只是您所需日期的毫秒数。
答案 1 :(得分:3)
试试这个方法:
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 :(得分:1)
尝试:
long diff= System.currentTimeMillis() - givenTimeStamp;
答案 3 :(得分:0)
我认为你应该找到像这样的差异
long timeStamp=System.currentTimeMillis();
long diff=(timeStamp-1500462813000);
System.currentTimeMillis()
将始终大于您当前的