在Android中,我以毫秒为单位获取当前时间,如下所示:
long currentDateMS = new Date().getTime();
当我打印时间时,值是正确的。但是我需要几秒钟的时间并将时间保存为整数。我将其转换为秒,如下所示
int seconds = (int) (currentDateMS / 1000);
然后它显示错误的时间。我认为转换时有溢出但我不知道如何解决它。
我需要将其转换为4字节的时间数据
答案 0 :(得分:2)
如果您的毫秒值超过Integer.MAX_VALUE
2,147,483,647
System.out.println(Integer.MAX_VALUE);
会产生2147483647
而System.out.println(Integer.MAX_VALUE+1);
给出了-2147483648
。
此外,您可以使用new Date.getTime()
。
System.currentTimeMillis()
答案 1 :(得分:0)
实际上,一个long变量使用62位来存储它的值,而int只使用32 ...这种转换会让你丢失很多信息会给出错误的答案。使用整数而不是长整数有什么特别的理由吗?
如果您只是想知道2个时刻之间的时差,可以使用同余来了解跳过的时间。
如果你知道(例如)完成两个操作不到一个小时(3600秒)并想知道它们之间的时差,你可以使用类似的东西:
int time1 = (int)((System.currentTimeMillis()/1000)%3600);
int time2 = (int)((System.currentTimeMillis()/1000)%3600);
int difference = (3600 + time2 - time1)%3600;