关于以下方法:
private long getCountdownLeft(Integer seconds) {
long now = System.currentTimeMillis();
long elapsedMillis = now - seconds;
long millisLeft = seconds * 1000 - elapsedMillis;
return millisLeft/1000;
}
public static void Main(String[] args) {
getApi().getLogger.debug("TimeLeft " + getCountDownLeft(3600)); //base time
}
它返回的值如下:-12039495960,为什么会这样?
答案 0 :(得分:1)
如果3600是你传入的值,你显然会得到负值。
打印System.currentTimeMillis()
,你会发现它的价值非常大。
currentTimeMillis()
defined为:
the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC.
答案 1 :(得分:0)
根据给出的信息很难判断,但要使用此方法,必须使用seconds
初始化System.currentTimeMillis() / 1000
。
答案 2 :(得分:0)
归结为一个声明,你有
return (seconds * 999 - System.currentTimeMillis())/1000;
如果System.currentTimeMillis()
是unix时间(现在是1343874904292),那么在课程中这将是否定的。我不确定你的意思是什么,但这显然不是......
答案 3 :(得分:0)
您的问题是从毫秒中减去秒。
试试这个:
long elapsedMillis = now - (seconds * 1000); // convert seconds to millseconds
看来你真的只是想这样做:
private long getCountdownLeft(Integer seconds) {
return seconds * 1000;
}