2013-05-27 40 views
3

我正在製作一個讀取字幕(.srt)文件的基本Java程序,並且我想將每次存儲爲一個Date對象。我只需要記錄小時,分鐘,秒和毫秒(至3位數)。我想我能夠存儲它使用這樣的:如何在Java中的日期對象中存儲和檢索毫秒?

String start = "00:01:01,604"; 
DateFormat sdf = new SimpleDateFormat("hh:mm:ss,SSS"); 
Date startDate = sdf.parse(start); 

要檢索,我可以做這樣的事情:

return String.format("\nStart: %d:%d:%dText: %s\n", startDate.getHours(),startDate.getMinutes(), startDate.getSeconds(), text); 

我正在尋找的東西,會做一些類似的東西getMilliseconds(如果它存在)。非常感謝你!

回答

3

用Java訪問部分日期(小時,分鐘等)的推薦方法是使用Calendar.get(Calendar.MILISECONDS),請參閱javadocs。如果您的代碼是這樣的:

Date startDate = sdf.parse(start); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTime(startDate); 
int milliseconds = calendar.get(Calendar.MILISECONDS); 

P.S.請注意,關於javadocsDate.getHours()Date.getSeconds()等方法目前不推薦使用。不要使用它們:)。

+0

這正是我所期待的。謝謝! – Yesha

1

只需撥打date.getTime()並獲得毫秒。

+1

getTime()返回自開始時代起的毫秒數。 OP希望自上一整秒以來的毫秒數。 –

+2

一般來說,使用'Date'是錯誤的。你可能想要使用一個簡單的「長」或專門的持續時間類(例如[來自Joda時間的那個](http://joda-time.sourceforge.net/key_duration.html))。 –

5

你正在處理的不是日期!不要使用Date類來處理它!日期有你不關心的奇怪的額外規則,並且可能會輕易將你絆倒(想想閏年,閏秒和時區)。

你應該要麼

  • 使用long舉行毫秒和處理計算你自己(這並不難,你不打算使用日曆)
  • 使用現有的持續時間類別,例如the one from Joda Time
+1

+1 - **這是正確的答案。 –

+0

+1 umm .... right one ... –

1

您總是可以使用Date.getTime()獲取以毫秒爲單位的值。它將以長格式返回一個值

相關問題