其保存在Android中,我得到的毫秒数当前时间如下:获取当前时间(秒)和整数
long currentDateMS = new Date().getTime();
和值是正确的,当我打印的时间。但我需要几秒钟的时间,并将时间保存为整数。我将它转换成秒数如下
int seconds = (int) (currentDateMS/1000);
但它然后显示错误的时间。我认为转换时出现溢出,但我不知道如何解决它。
我需要将其转换成4个字节的时间数据的
其保存在Android中,我得到的毫秒数当前时间如下:获取当前时间(秒)和整数
long currentDateMS = new Date().getTime();
和值是正确的,当我打印的时间。但我需要几秒钟的时间,并将时间保存为整数。我将它转换成秒数如下
int seconds = (int) (currentDateMS/1000);
但它然后显示错误的时间。我认为转换时出现溢出,但我不知道如何解决它。
我需要将其转换成4个字节的时间数据的
你会得到一个错误的答案,如果你的毫秒值翻转的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()
。
实际上,一个长变量使用62位来存储它的值,而一个int只使用32位......这种转换会让你失去很多信息而给出错误的答案。是否有任何特殊的理由使用整数而不是长整数?
如果你只是想知道两个时刻之间的时差,你可以使用同余来知道跳过的时间。
如果你知道(例如)这两个操作只需要不到一个小时(3600秒)来完成,想知道它们之间的时间差,你可以使用类似:
int time1 = (int)((System.currentTimeMillis()/1000)%3600);
int time2 = (int)((System.currentTimeMillis()/1000)%3600);
int difference = (3600 + time2 - time1)%3600;
从什么时候开始使用这种奇数位? – Ordous
是的,我需要它作为一个整数,因为我需要发送2个字节的数据。 – JourneyWithAndroid
'我需要发送2个字节的数据.'你知道整数是4个字节,对吗? – njzk2
你不能。当你转换时你会错误的时间。 long是当前时间的毫秒表示。要将时间从毫秒转换为秒,您需要进行乘法运算。不分。 – EagleEye
'currentDateMS'已经以毫秒为单位。你的“毫秒”实际上是秒 – Blackbelt
“你以毫秒为单位获得当前时间”是什么意思?你在发布的行中得到的是时间戳,它是自开始时起*毫秒,而不是(我假设你想要的)*毫秒,从一天开始*。 – Ordous