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

Java 获取以秒为单位的当前时间并将其保存为整数,java,android,Java,Android,在Android中,我得到的当前时间以毫秒为单位,如下所示: long currentDateMS = new Date().getTime(); 当我打印时间时,这个值是正确的。但我需要以秒为单位的时间,并将时间保存为整数。我将其转换为秒,如下所示 int seconds = (int) (currentDateMS / 1000); 但是它显示了错误的时间。我认为转换时有溢出,但我不知道如何解决它 我需要将其转换为4字节的时间数据如果毫秒的值在整数上滚动,您将得到错误的答案。MAX_值即

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

long currentDateMS = new Date().getTime();
当我打印时间时,这个值是正确的。但我需要以秒为单位的时间,并将时间保存为整数。我将其转换为秒,如下所示

int seconds = (int) (currentDateMS / 1000);
但是它显示了错误的时间。我认为转换时有溢出,但我不知道如何解决它


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

如果毫秒的值在
整数上滚动,您将得到错误的答案。MAX_值
2147483647

例如,
System.out.println(Integer.MAX_值)导致
2147483647
System.out.println(Integer.MAX_值+1)给出
-2147483648


另外,您可以使用
System.currentTimeMillis()
,而不是使用
new Date.getTime()
,实际上长变量使用62位来存储其值,而int只使用32位。。。这种转换会使您丢失大量信息,并给出错误的答案。使用整数而不是长整数有什么特别的原因吗

如果你只想知道两个时刻之间的时差,你可以使用同余来知道跳过的时间

如果您知道(例如)完成两个操作需要不到一小时(3600秒)的时间,并且想知道它们之间的时差,您可以使用以下方法:

inttime1=(int)((System.currentTimeMillis()/1000)%3600);
int time2=(int)((System.currentTimeMillis()/1000)%3600);
整数差=(3600+time2-time1)%3600;

你不能。当你转换时,你会错失时间。long是当前时间的毫秒表示形式。要将时间从毫秒转换为秒,需要乘以。不除法。
currentDateMS
已以毫秒为单位。你的
毫秒实际上是秒。你所说的
以毫秒为单位获取当前时间的确切含义是什么?您在发布的行中看到的是时间戳,它是从纪元开始算起的毫秒,而不是从天开始算起的毫秒(我假设您想要的)。以秒为单位的当前时间是
1423075116
。最大值为
2147483647
。这里没有溢出。
那么它显示了错误的时间
你是如何计算的?从什么时候开始long使用如此奇数的位?是的,我需要它作为一个整数,因为我需要发送2个字节的数据。
我需要发送2个字节的数据。
你知道整数是4个字节,对吗?我的错误,long使用64位:抱歉