以秒为单位获取当前时间并将其保存为整数

时间:2015-02-04 18:24:17

标签: java android

在Android中,我以毫秒为单位获取当前时间,如下所示:

long currentDateMS = new Date().getTime();

当我打印时间时,值是正确的。但是我需要几秒钟的时间并将时间保存为整数。我将其转换为秒,如下所示

int seconds = (int) (currentDateMS / 1000);

然后它显示错误的时间。我认为转换时有溢出但我不知道如何解决它。

我需要将其转换为4字节的时间数据

2 个答案:

答案 0 :(得分:2)

如果您的毫秒值超过Integer.MAX_VALUE 2,147,483,647

,则会得到错误的答案 例如,

System.out.println(Integer.MAX_VALUE);会产生2147483647System.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;