2015-02-04 151 views
1

其保存在Android中,我得到的毫秒数当前时间如下:获取当前时间(秒)和整数

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

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

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

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

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

+0

你不能。当你转换时你会错误的时间。 long是当前时间的毫秒表示。要将时间从毫秒转换为秒,您需要进行乘法运算。不分。 – EagleEye

+5

'currentDateMS'已经以毫秒为单位。你的“毫秒”实际上是秒 – Blackbelt

+0

“你以毫秒为单位获得当前时间”是什么意思?你在发布的行中得到的是时间戳,它是自开始时起*毫秒,而不是(我假设你想要的)*毫秒,从一天开始*。 – Ordous

回答

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()

0

实际上,一个长变量使用62位来存储它的值,而一个int只使用32位......这种转换会让你失去很多信息而给出错误的答案。是否有任何特殊的理由使用整数而不是长整数?

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

如果你知道(例如)这两个操作只需要不到一个小时(3600秒)来完成,想知道它们之间的时间差,你可以使用类似:

int time1 = (int)((System.currentTimeMillis()/1000)%3600); 
int time2 = (int)((System.currentTimeMillis()/1000)%3600); 
int difference = (3600 + time2 - time1)%3600; 
+1

从什么时候开始使用这种奇数位? – Ordous

+0

是的,我需要它作为一个整数,因为我需要发送2个字节的数据。 – JourneyWithAndroid

+0

'我需要发送2个字节的数据.'你知道整数是4个字节,对吗? – njzk2