2014-07-22 104 views
0

我試圖讓我的應用程序顯示一個時間,併爲此我需要得到android的分鐘和小時。我正在嘗試使用currentTimeMillis(),但我在幾個小時內收到了錯誤的號碼。這是我使用系統時鐘的小時和分鐘代碼。System.currentTimeMillis()給幾小時的錯誤時間

int defday = (int) (System.currentTimeMillis()/(1000 * 60 * 60 * 24)); 
    int defhour = (int) (System.currentTimeMillis() - (defday * 1000 * 60 * 60 * 24)) 
      /(1000 * 60 * 60); 
    int defmin = (int) (System.currentTimeMillis() 
      - (defhour * 1000 * 60 * 60) - (defday * 1000 * 60 * 60 * 24)) 
      /(1000 * 60); 

我運行應用程序後,時間顯示儘管當前時間是1:36時間爲5:36。我究竟做錯了什麼?

+5

時區? currentTimeMillis是UTC時間 –

+0

+1,它看起來不像你正在做什麼來處理你所在的時區。如果只有幾個小時關閉,這似乎是原因。 –

回答

3

創建日曆對象:

long millis=System.currentTimeMillis(); 
Calendar c=Calendar.getInstance(); 
c.setTimeInMillis(millis); 

在這之後,你可以從日曆對象的字段:

int hours=c.get(Calendar.HOUR); 
int minutes=c.get(Calendar.MINUTE); 

然後:

INT MinutesHours =(小時* 60)+分鐘; 要回去了,你可以在日曆中使用set方法:

Calendar c=Calendar.getInstance(); 
c.set(Calendar.MINUTE,minutes); 
long millis=c.getTimeInMillis(); 

參考

How to measure the a time-span in seconds using System.currentTimeMillis()?

currentTimeMillis() to Years, days, and minutes, and backwords. (hard)

+0

太棒了,這與我正在嘗試做的事完全吻合 – Bonhomme

相關問題