2015-02-04 68 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