Java长返回奇怪值
关于以下方法:Java长返回奇怪值,java,long-integer,Java,Long Integer,关于以下方法: private long getCountdownLeft(Integer seconds) { long now = System.currentTimeMillis(); long elapsedMillis = now - seconds; long millisLeft = seconds * 1000 - elapsedMillis; return millisLeft/1000; } public
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,这是为什么?根据给出的信息很难判断,但要使此方法正常工作,
秒必须用System.currentTimeMillis()/1000
初始化 如果3600是您要传递的值,那么显然会得到一个负值
打印出System.currentTimeMillis()
,您将看到它是一个相当大的值
currentTimeMillis()
如下所示:
归结为一句话,你有
return (seconds * 999 - System.currentTimeMillis())/1000;
如果System.currentTimeMillis()
是unix时间(现在是1343874904292),那么这当然是负数。我不确定你想写什么,但这显然不是它…你的问题是你在用毫秒减去秒
试试这个:
long elapsedMillis = now - (seconds * 1000); // convert seconds to millseconds
看来你真的只是想这么做:
private long getCountdownLeft(Integer seconds) {
return seconds * 1000;
}
打印出你的变量,似乎你的elapsedMillis比秒大得多*1000也有可能他有溢出。@锑是的,但他不知道输入的值是什么,很难判断。除非你将传递的值显示为秒
。是的,它们很大,我该怎么做才能得到一个合理的值呢?我试图通过当前的时间状态来得到一个小时的时间差。每次我调用“getCountdownLeft()”方法时,它都会给出当时一个小时的时间差。
private long getCountdownLeft(Integer seconds) {
return seconds * 1000;
}