其保存在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