2016-03-28 20 views
0

我有毫秒的時間,我想把它轉換成小時,分鐘和秒鐘。我已經試過這段代碼,但我不知何故不會獲得最新的時間。例如: 我設定了時間3:50但是得到了7:50。爲什麼會發生?爲什麼我設定時間但變得不同?

這是我如何設置,獲取和顯示時間:

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute()); 
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour()); 
long alarm3 = calendar.getTimeInMillis(); 
     long alarm4 = (alarm3/(1000*60*60))%24; 
     long alarm5 = (alarm3/(1000*60))%60; 
     long alarm6 = (alarm3/1000)%60; 
Log.i("Alarm1","Hours:" + Long.toString(alarm4)); 
     Log.i("Alarm1","Minutes:" + Long.toString(alarm5)); 
     Log.i("Alarm1","Seconds:" + Long.toString(alarm6)); 
+0

您是使用上下箭頭設定時間還是編輯文本本身? –

+0

@ muhammed-refaat如果你的意思是我使用哪個視圖,那麼我使用一個時間選擇器。如果沒有,那麼請解釋你的問題 –

+0

我知道你使用的是TimePicker,我問你如何使用它來設置時間?因爲TimePicker可以用兩種方式使用,第一種使用(plus/mines)按鈕,第二種使用android鍵盤,所以如果你通過android鍵盤使用它,這可能是你的問題,然後我會解釋爲什麼。 –

回答

1

雖然答案以上只會讓它工作,你可能仍然想知道爲什麼你的解決方案沒有。這很可能是因爲時區偏移。當你得到日曆的實例時:

Calendar calendar = Calendar.getInstance(); 

它繼承了你的語言環境,所以你的時區也是如此。 然後,假設您應用的timePicker工作在同一個時區,您將分針和時針consistenly:

calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute()); 
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour()); 

,但最後這個特別的方法返回一個UTC時間:

long alarm3 = calendar.getTimeInMillis(); 

所以我猜你的TZ抵消是4小時。

+0

所以這不會影響我的應用程序的工作? –

+0

它不應該 - 觸發警報的時間與應用程序的偏移量相同,所以它只是顯示有趣(UTC)時間的日誌。 – ptrk

+0

您認爲我可以在磨坊使用時間設定警報嗎? –

1

您可以使用SimpleDateFormat

public static String getOnlyTimeFromMillis(long millis) { 
    SimpleDateFormat apiFormat = new SimpleDateFormat("HH:mm:ss"); 
    Date date = new Date(millis); 
    return apiFormat.format(date); 
} 
0

使用此功能

public static String getTimeFromMilliseconds(long milliseconds) { 

     return (new SimpleDateFormat("HH:mm:ss")).format(new Date(milliseconds)); 
    } 
相關問題